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.

[SOLVED] SDF back annotation error with ModelSim

Status
Not open for further replies.

zb8521

Newbie level 4
Joined
Jan 26, 2010
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,334
Hi,

I tried to run post-P&R simulation in ModelSim with SDF back annotation but it failed due to some syntax error in the SDF file.

The Place & Route is done by Encounter and then saved as the Verilog netlist. In Encounter, I used both the delay calculation in the Timing menu and the command "write_sdf" in the command line, and generated both 2.1 and 3.0 version of SDF, but all result in the following error in ModelSim when starting simulation:

Error: /(some path)/postPR.sdf(1343): near "&&": Syntax error
Fatal: (sdfcomp-SDF-3445) Failed to parse SDF file "/(some path)/postPR.sdf"

And around line 1343 of the SDF file is

1339: (CELL
1340: (CELLTYPE "SDFFR_X2")
1341: (INSTANCE present_reg\[1\])
1342: (TIMINGCHECK
1343: (SETUP (COND (D==1'b0)&&(RN==1'b1)&&(SE==1'b1) (posedge SI)) (COND (D==1'b0)&&(RN==1'b1)&&(SE==1'b1) (posedge CK)) (0.1173:0.1173:0.1173))
1344: (SETUP (COND (D==1'b0)&&(RN==1'b1)&&(SE==1'b1) (negedge SI)) (COND (D==1'b0)&&(RN==1'b1)&&(SE==1'b1) (posedge CK)) (0.103:0.103:0.103))

Then I found that the COND obviously came from the following definition in the .lib file of the standard cell library:

timing () {
related_pin : "A";
when : "!B & !C1 & !C2";
sdf_cond : "(B == 1'b0) && (C1 == 1'b0) && (C2 == 1'b0)"; <- here
timing_sense : negative_unate;
......

I was using the Nangate 45nm open cell library. I then tried the same flow (from synthesis to Place & Route) with the OSU 45nm library on the same design. Then the back annotation works fine. In the .lib file of the OSU library it says:

timing() {
related_pin : "CLK";
timing_type : hold_rising;
when : "S&R";
sdf_cond : "S_EQ_1_AN_R_EQ_1 == 1'b1"; <- here

So I think this condition expression may be the key. Does anyone have any clue about what exactly is the error and how do fix that? Thanks.
 

ljxpjpjljx said:
maybe you use the open lib , you should so some setting !

Could you give me more details? Did you use the same lib before?
 

Can anyone help me out?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top