Jupiter_2900
Junior Member level 3
- Joined
- Oct 11, 2009
- Messages
- 29
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,281
- Activity points
- 1,763
More likely is they don't have all the necessary inputs and outputs between the sequential and combinational logic in the ports so something is no longer connected and is removed from the synthesized design.Are you sure you are driving all the i/p to their proper values?
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 module lookup ( indexX, indexY , clk ,out_port); output [7:0] out_port ; wire [7:0] out_port ; input [3:0] indexX ; wire [3:0] indexX ; input [3:0] indexY; wire [3:0] indexY; reg [7:0] intermediate; input clk;always@(posedge clk ) begin begin case (intermediate) 8'h0: intermediate = 8'h63; 8'h01: intermediate = 8'h7c; 8'h02: intermediate = 8'h77; 8'h03: intermediate = 8'h7b; 8'h04: intermediate = 8'hf2; 8'h05: ... 8'hfe: intermediate = 8'hbb; 8'hff: intermediate = 8'h16; default: intermediate = 8'h00; endcase end assign out_port = intermediate; endmodule
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 module mem (IndexX,indexY,intemediate); input [3:0] indexX ; wire [3:0] indexX ; input [3:0] indexY; wire [3:0] indexY; output [7:0] intermediate; reg [7:0] intermediate; always @(*) begin case (intermediate) 8'h0: intermediate = 8'h63; 8'h01: intermediate = 8'h7c; 8'h02: intermediate = 8'h77; 8'h03: intermediate = 8'h7b; 8'h04: intermediate = 8'hf2; 8'h05: ... 8'hfe: intermediate = 8'hbb; 8'hff: intermediate = 8'h16; default: intermediate = 8'h00; endcase end endmodule
Code Verilog - [expand] 1 2 3 4 5 6 7 8 module regOut(inp,clk,out_port); input [7:0] inp; input clk; output [7:0] out_port; reg [7:0] out_port; always @(posedge clk) out_port = inp; endmodule
Code Verilog - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 module lookup(indexX, indexY , clk ,out_port); input [3:0] indexX; input [3:0] indexY; input clk; output out_port; wire [7:0] temp; mem insMem(.IndexX(indexX),.indexY(indexY),.intemediate(temp)); regOut insRegOut(.inp(temp),.clk(clk),.out_port(out_port)); endmodule
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 module mem (IndexX,indexY,intemediate); input [3:0] indexX ; wire [3:0] indexX ; input [3:0] indexY; wire [3:0] indexY; output [7:0] intermediate; reg [7:0] intermediate; always @(*) begin case ({indexX,indexY}) 8'h0: intermediate = 8'h63; 8'h01: intermediate = 8'h7c; 8'h02: intermediate = 8'h77; 8'h03: intermediate = 8'h7b; 8'h04: intermediate = 8'hf2; 8'h05: ... 8'hfe: intermediate = 8'hbb; 8'hff: intermediate = 8'h16; default: intermediate = 8'h00; endcase end endmodule
Ask someone not familiar with the problem to critique that assessment. Unless you are very good at posing questions many people tend to not put enough detail into their questions. It's very common around here.dear ads-ee
i don't get your saying about "i has not supplied useful information", what information would you like ? i think my question was quite clear then please if you don't want to help then don't
Code Verilog - [expand] 1 2 3 4 5 always @(*) begin case (intermediate) 8'h0: intermediate = 8'h63;
sure but it's a bad habit to have and for good reasons, you can end up with simulation synthesis mismatches in various situations. (probably not in this case)actually in my case there is no difference between = and <=
Why would you think that are you running a timing simulation? If you are didn't you check to see if the post synthesis result meets the timing constraints?do you think second scenario may be violate somehow timing rule (holding time and setup time) of registers ??
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 module mem (IndexX,indexY,intemediate); input [3:0] indexX ; wire [3:0] indexX ; input [3:0] indexY; wire [3:0] indexY; output [7:0] intermediate; reg [7:0] intermediate; always @(*) begin case ({indexX,indexY}) 8'h0: intermediate = 8'h63; 8'h01: intermediate = 8'h7c; 8'h02: intermediate = 8'h77; 8'h03: intermediate = 8'h7b; 8'h04: intermediate = 8'hf2; 8'h05: ... 8'hfe: intermediate = 8'hbb; 8'hff: intermediate = 8'h16; default: intermediate = 8'h00; endcase end endmodule
module mem ([B][COLOR="#FF0000"]I[/COLOR][/B]ndexX,indexY,intemediate);
input [3:0] [B][COLOR="#FF0000"]i[/COLOR][/B]ndexX ;
wire [3:0] [B][COLOR="#FF0000"]i[/COLOR][/B]ndexX ;
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 module Tb(); wire [7:0] out_port ; reg [3:0] indexX; reg [3:0] indexY; reg clk; reg [7:0] key [0:15]; reg [7:0] data [0:255]; integer i; initial begin clk = 0; i = -1; end always #10 clk = ~clk; lookup sub1( .indexX(indexX), .indexY(indexY) ,.clk(clk), .out_port(out_port) ); always@ (posedge clk) begin key [0]=223;key [1]=230;key [2]=214;key [3]=200;key [4]=145;key [5]=216;key [6]=187;key [7]=98; key [8]=123;key [9]=65;key [10]=74;key [11]=34;key [12]=25;key [13]=166;key [14]=121;key [15]=13; data[0]=0;data[1]=1;data[2]=2; ... data[253]=253;data[254]=254;data[255]=255; end always@(posedge clk) begin begin i <= i+1; indexX <= key[1][7:4] ^ data[i][7:4]; indexY <= key[1][3:0] ^ data[i][3:0]; if(i == 256) begin $display("finish"); $finish; end end initial begin $monitor("%d,\t%b,\t%d,\t%d,\t%d,\t%d,\t%d",$time,clk,i,indexX,indexY,data[i],out_port); end endmodule
I'm not sure you can make that claim considering the lower case i v.s. the upper case I is the difference between the first combined file and the second separated files and is also the difference between working and not working in DC versions.i assure you its not the problem
Other than the case issue and the blocking assignment in the clocked assignment there shouldn't be any differences, I doubt the synthesis could change much either as the combonational logic doesn't change between the combined and separate versions.Jupiter_2900 said:2) why simulation results (before synthesis) are different with post syntheses simulation ? my code is so simple and there is nothing neither for optimization nor vague for DC to synths incorrectly ?!!
in fact because i want to measure power trace of each part (sequential and combinational) separately i had no other choice but split my code into two module because as i know prime time can give me power trace of each module seprately.
So how do you perform this power trace on aeparate modules if you've flattened the design? Seems to me it ends up the same as a single module implementation?could you please explain more why should i perform "bottom up synthesis and not flattening the top level"?? i checked my script and i knew that i performed top down approach and flattening parameter is as its default !!!
Code Bash - [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 #################set LIBRARIES############################### ##45nm cd /root/Desktop/V2 set target_library "./db/NangateOpenCellLibrary_45nm.db" set link_library "./db/NangateOpenCellLibrary_45nm.db" ############################################################# #############Define some variables########################### ############################################################# set my_toplevel lookup set my_files [list lookup.v regOut.v mem.v] set my_clock_pin clk set my_clk_freq_MHz 50 set my_input_delay_ns 0 set my_output_delay_ns 0 set compile_seqmap_propa-gate_high_effort false set compile_seqmap_propagate_constants false define_design_lib WORK -path ./WORK ############################################################## ####################Analyze & Elaborate####################### ############################################################## read_verilog $my_files analyze -f verilog $my_files elaborate $my_toplevel current_design $my_toplevel link uniquify #This Command Will give a unique name for each module so the #repeated modules won't be combined. ################################################################## ####################### Generate CLOCK############################ ################################################################## set my_period [expr 1000 / $my_clk_freq_MHz] #Set the clk periode in ns e.g. 1000/200 = 5 ns which means #200 MHz signal clk. set find_clock [find port [list $my_clock_pin]] if { $find_clock != [list] } { set clk_name $my_clock_pin create_clock -period $my_period $clk_name set_dont_touch_network $clk_name set_fix_hold $clk_name } else { set clk_name vclk create_clock -period $my_period -name $clk_name set_dont_touch_network $clk_name #do not put buffer in clk path. set_fix_hold $clk_name #want to meet hold time. } ################################################################# ############# map and optimize the design ####################### ################################################################# compile -ungroup_all -map_effort medium compile -incremental_mapping -map_effort medium ################################################################# ############# analyze and debug the design ###################### ################################################################# check_design remove_unconnected_ports -blast_buses [find -hierarchy cell "*"] report_constraint -all_violators > ./out/violate.txt set filename [format "%s%s" $my_toplevel "_dc_netlist.v"] # %s%s determine the original name of design not the given name by design compiler!! write -f vhdl -output ./out/$filename -hierarchy set filename [format "%s%s" $my_toplevel ".sdc"] write_sdc ./out/$filename set filename [format "%s%s" $my_toplevel ".sdf"] write_sdf ./out/$filename set filename [format "%s%s" $my_toplevel ".spef"] write_parasitics -output ./out/$filename set filename [format "%s%s" $my_toplevel ".ddc"] write -format ddc -hierarchy -output ./out/$filename
i haven't set flatten parameter at all, and i think its default will be disable. in Prime time there is an ability which will calculate each submodule power consumption
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?