Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[moved] Create Scematic greyed out in Degin Vision

Status
Not open for further replies.

Damomeera

Junior Member level 3
Joined
Nov 11, 2012
Messages
30
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Location
Coimbatore
Activity points
1,506
Hi All,

I have written behavioral coding for ALU. While creating schematic in design vision, the icon gets greyed out after compiling my design. Please help me with this problem.


Code Verilog - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////
module aluuu(
    a,
    b,
    status_in,
    op,
    clk,
     rst,
    status_out,
//c0 is the Output bits for all operations. For Mul operations, output is {c1,c0}
//as multiplication of two 16 bit number resuts in maximum of 32 bit number.
    c0,  
    c1
    );
     input [15:0] a,b;
     input [3:0] status_in;
     input [3:0] op;
     input clk,rst;
     output [15:0] c0;
     output [15:0] c1;
     output [3:0] status_out;
    reg [3:0] status_out;
// status register in test_bench - 0:Carry bit 1:Zero bit 2:Borrow bit 3:Parity bit
    reg [15:0] c0,c1;
    
//Opcode written as parameters.
    parameter
    Add=4'b0000,
    Adc=4'b0001,
    Sub=4'b0010,
    Sbb=4'b0011,
    inc=4'b0100,
    dec=4'b0101,
    Mul=4'b0110,
    pst=4'b0111,
    And=4'b1000,
    Or =4'b1001,
    Not=4'b1010,
    Nan=4'b1011,
    Nor=4'b1100,
    Xor=4'b1101,
    Lst=4'b1110,
    Rst=4'b1111;
function parity;
input [15:0] c;
begin
parity=0;
if(status_in[3]==0) begin
    parity = (status_in[3]^c0[0]^c0[1]^c0[2]^c0[3]^c0[4]^c0[5]^c0[6]^c0[7]^c0[8]^c0[9]^c0[10]^c0[11]^c0[12]^c0[13]^c0[14]^c0[15]);
end
else begin
    parity = (c0[0]^c0[1]^c0[2]^c0[3]^c0[4]^c0[5]^c0[6]^c0[7]^c0[8]^c0[9]^c0[10]^c0[11]^c0[12]^c0[13]^c0[14]^c0[15]);
end
end
endfunction
 
function zero_check;
input [15:0]x,y;
begin
zero_check=0;
if(x==0 && y ==0) begin zero_check= status_in[1] | 1; end
else begin zero_check=status_in[1] & 0; end
end
endfunction
//Beginning of the always block.    
    always@(posedge clk) begin
    
        if(rst) begin
            c0=0;
            c1=0;
            status_out = status_in;
        end
        else begin
    
            case(op)
                Add:begin{status_out[0],c0} = a+b; c1=0; status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);end
                Adc:begin {status_out[0],c0} = a+b+status_in[0]; c1=0; status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);end
                Sub:begin c0 = a-b;c1=0;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);if(b>a)begin status_out[2]=1; end else begin status_out[2]=0; end end
                Sbb:begin c0 = a-b-status_in[2]; c1=0;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);if(b+status_in[2]>a)begin status_out[2]=1; end else begin status_out[2]=0; end end
                inc:begin {status_out[0],c0} = a+1;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                dec:begin c0 =a-1;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                Mul:begin {c1,c0} = a*b;    status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);end
                pst:begin c0=a; c1 = 0;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                And:begin c0=a & b;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                Or: begin c0=a | b; status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);end
                Not:begin c0=~a; status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);end
                Nan:begin c0=~(a & b);status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                Nor:begin c0=~(a | b);status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                Xor:begin c0=a ^ b;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                Lst:begin c0=a<<b; status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1);end
                Rst:begin c0=a>>b;status_out[3]=parity(c0);
            status_out[1]=zero_check(c0,c1); end
                default: $display("invalid entry");
            endcase
        end
   end
 
endmodule



after_compile.PNG

before_compile.PNG


Thank you.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top