Hallo, ich versuche mich im Rahmen meiner Diplomarbeit am Digital ASIC
design. Auf diesem Institut werden sonst nur analog ASICs designed
weshalb kein know-how vorhanden ist was digitales design angeht.
In vieles konnte ich mich bereits einarbeiten, post synthesis simulation
ohne timings bekomme ich zum laufen, jedoch schaffe ich es nicht die SDF
files miteinzubeziehen. Bislang habe ich mit Cadence NCSIM gearbeitet.
Als library files um die Technology spezifische Netlist überhaupt
benutzen zu können habe ich mit verilog conditional libraries gearbeitet
(hier gibt es: conditional, non-conditional und functional).
In dier Verilog library sidn jedoch alle delays bei 0.1, hier ein
ausschnitt:
1
moduleAND2_X1(A1,A2,Q);
2
inputA1;
3
inputA2;
4
outputQ;
5
6
and(Q,A1,A2);
7
8
specify
9
(A1=>Q)=(0.1,0.1);
10
(A2=>Q)=(0.1,0.1);
11
endspecify
12
13
endmodule
Die Flip Flops sind natürlich deutlich komplizierterter, jedoch sind die
delays allesamt bei 0.1ns. Sollten diese delays durch die Daten des SDF
Files überschrieben werden? Mit NCSim bei der elaboration bekomme ich
folgenden output: SDF statistics: No. of Pathdelays = 1208 Annotated
100% -- No. of Tchecks = 350 Annotated 0%
In der Simmulation haben meine ausgangssignale ein delay von genau 0.1ns
so wie in dem Verilog lib file. Diese delays kommen nur vom diesem
library file, egal ob ich den sdf annotate befehl dabei habe!
Meine Gedanken:
-Ich benutze die falsche library: in den Techfiles der foundry stehen
folgende Formate zur verfügung db, gds, lef, liberty (die hab ich für
die synthese benutzt), milkyway, spice und verilog.
-mit den anderen verilog libs (non-cond und functional) bekomme ich das
warning Unable to annotate to non-existant path (einige hundert mal),
also schneine ich sonst nicht alles falsch zu machen.
Hier ist meine "minimalistische" Verilog Testbench, arbeite sonst mit
VHDL, vorerst geht es mir darum die Simulation zum laufen zu bringen:
Bislang habe ich mit Cadence NCSim gearbeitet, habe heute Vormittag
versucht das ganze mit der Modelsim student edition zum laufen zu
bekommen, aber das Programmkonzept ist für mich nicht greifbar und ich
finde mich nicht wirklich zurecht.
Danke für eure Hilfe!
Alexx schrieb:> Bislang habe ich mit Cadence NCSim gearbeitet, habe heute Vormittag> versucht das ganze mit der Modelsim student edition zum laufen zu> bekommen, aber das Programmkonzept ist für mich nicht greifbar und ich> finde mich nicht wirklich zurecht.
Bei NCsim und analog design, kann ich Dir nicht wirklich helfen.
Aber bei Modelsim:
1. Schritt: alles kompilieren
Die Reihenfolge ist wichtig: erst die Bibliotheken, dann das Design und
zum Schluß die Testbench.
1
vcom -work <bibliotheksname> <designfile.vhd>
2
vlog -work <bibliotheksname> <designfile.v>
2. Schritt: Simulation laden
1
vsim work.top_design
3. Schritt: interessierte Signale in den Waveviewer ziehen
4. Schritt: Simulation starten
Dafür am TCL-Prompt z.B. folgendes eingeben:
bei NCSIM kann ich helfen:
Du musst in jedem Falle das verilog benutzen.
Schau nach, ob es defines in deiner Technologie gibt, die die specify
und $setuphold erst einschalten.
sdf file kompilieren:
ncsdfc -MESSAGES digital.sdf
sdf command file erzeugen mit folgendem Inhalt:
COMPILED_SDF_FILE=digital.sdf.X,SCOPE=work.asic_tb.asic_inst.digital_ins
t,MTM_CONTROL=TOOL_CONTROL;
ncelab aufrufen mit:
-SDF_CMD_FILE ncelab.sdf_cmd -SDF_VERBOSE
Rest wie immer.
Alexx schrieb:> versuche mich im Rahmen meiner Diplomarbeit am Digital ASIC> design
Dumme Frage, womit machst du das Layout? Encounter?
Der ganze Rest Clock Tree Synthese, Floorplan, Placement, Routing, etc
ist dir klar?
Durch die null values bekomme ich natürlich keine anderen Zeiten außer
die 0,1ns aus den verilog libraries.
Hier ein ausschnitt aus dem sdf:
1
(DELAYFILE
2
(SDFVERSION"OVI 3.0")
3
(DESIGN"Sync_Counter")
4
(DATE"Wed Mar 28 13:34:09 CEST 2018")
5
(VENDOR"Cadence, Inc.")
6
(PROGRAM"Genus(TM) Synthesis Solution")
7
(VERSION"17.11-s014_1")
8
(DIVIDER.)
9
(VOLTAGE::1.8)
10
(PROCESS"::1.0")
11
(TEMPERATURE::25.0)
12
(TIMESCALE1ps)
13
(CELL
14
(CELLTYPE"INV_X0d5")
15
(INSTANCEg1644)
16
(DELAY
17
(ABSOLUTE
18
(PORTA(::0.0))
19
(IOPATHAQ(::17)(::9))
20
)
21
)
22
)
23
(CELL
24
(CELLTYPE"DFS_X1")
25
(INSTANCEsig_shift_reg_reg\[0\])
26
(DELAY
27
(ABSOLUTE
28
(PORTCP(::0.0))
29
(PORTD(::0.0))
30
(PORTSI(::0.0))
31
(PORTSE(::0.0))
32
(IOPATHCPQ(::153)(::191))
33
(IOPATHCPQN(::246)(::213))
34
)
35
)
36
(TIMINGCHECK
37
(SETUPHOLD(negedgeD)(posedgeCP)(::130)(::-98))
38
(SETUPHOLD(posedgeD)(posedgeCP)(::86)(::-75))
39
(SETUPHOLD(negedgeSI)(posedgeCP)(::272)(::-207))
40
(SETUPHOLD(posedgeSI)(posedgeCP)(::96)(::-85))
41
(SETUPHOLD(negedgeSE)(posedgeCP)(::104)(::-70))
42
(SETUPHOLD(posedgeSE)(posedgeCP)(::80)(::-68))
43
(WIDTH(posedgeCP)(::82.59))
44
(WIDTH(negedgeCP)(::146.27))
45
)
46
)
Ja ich musste einige defines aktivieren, davor hatt mir aber der
elaborator schon Fehler angezeigt!
Layout will ich mit Innovus machen (sollte der nachfolger von encounter
sein). Ein bisschen hab ich mich schon rumgespielt, bis zu clock tree
synthese ist alles klar, diese wurde jedoch bei innovus massiv geändert.
Der userguide ist aber vorhanden und das sollte schaffbar sein.
Floorplaning und RnR schaut vorerst ganz gut aus.
Vielen Dank!
Erik schrieb:> Das mit den Nullvalues ist leicht, das ist ein reines max sdf.>> Du hast es mit Modelsim mit -sdfmax eingelesen?
Nein, hab den Simulation Button benutzt und dann die Datei ausgewählt!
Aber der Tipp wird es sein vielen Dank!
Erik schrieb:> Das mit den Nullvalues ist leicht, das ist ein reines max sdf.>> Du hast es mit Modelsim mit -sdfmax eingelesen?
So war es, jetzt funktioniert es! An was hast du das erkannt? an dem
(::127)
min:typical:max?
Vielen Dank für die Hilfe!
LG Alex
Alexx schrieb:> An was hast du das erkannt? an dem> (::127)> min:typical:max?
Ja daran in Kombination mit "Out of 2279 SDF statements, 2279 had null
values"
Das ist ja ein wirklich kleines Design ;)