Forum: FPGA, VHDL & Co. Design mit verschiedenen libs und irun compilieren


von Cadence_Rookie (Gast)


Lesenswert?

Hallo zusammen,

ich habe hier an der FH eine Cadence-Linux-Umgebung und möchte nun mit 
irun mein Design compilieren, damit ich es für weitere Tools von Cadence 
verwenden kann.

Leider scheitere ich schon an den einfachsten Aufgaben.
Ich habe mir ein File angelegt, in das ich zahlreiche Befehle eintrage, 
damit ich die nicht immer und immer wieder in die Konsole einhacken 
muss. Dieses File sieht nun wie folgt aus:
1
#! /bin/csh -f
2
3
irun -clean -cleanlib       
4
5
irun -compile -v93 -makelib LIB1 ~/libraries/lib1/adder.vhd       
6
irun -compile -v93 -makelib LIB2 ~/libraries/lib2/mux.vhd  
7
irun -compile -v93 -makelib LIB3 ~/libraries/lib3/sequenz.vhd      
8
      
9
irun -compile -elaborate -top top_design -v93 -cdslib ./cds.lib ~/design/vhd/input.vhd
10
irun -compile -elaborate -top top_design -v93 -cdslib ./cds.lib ~/design/vhd/output.vhd
11
irun -compile -elaborate -top top_design -v93 -cdslib ./cds.lib ~/design/vhd/wrapper.vhd
12
irun -compile -elaborate -top top_design -v93 -cdslib ./cds.lib ~/design/vhd/fifo.vhd       
13
irun -compile -elaborate -top top_design -v93 -cdslib ./cds.lib ~/design/vhd/fsm.vhd       
14
irun -compile -elaborate -top top_design -v93 -cdslib ./cds.lib ~/design/vhd/top_design.vhd

Damit die libraries gefunden bzw. gemappt werden können, habe ich ein 
File cds.lib angelegt, was man entweder mit dem Befehl -cdslib cds.lib 
mit einbinden kann, oder es wird offenbar auch automatisch danach 
gesucht und es entsprechend ausgeführt.
Darin habe ich die libs zu den entsprechenden Verzeichnissen gemappt:
1
DEFINE LIB1 ~/design/INCA_libs/LIB1/
2
DEFINE LIB2 ~/design/INCA_libs/LIB2/
3
DEFINE LIB3 ~/design/INCA_libs/LIB3/

Gehe ich prinzipiell erstmal korrekt vor, oder habe ich hier schon 
Fehler gemacht?

Ich habe nun das Problem, dass mir immer gemeldet wird, dass die Pfade 
in der cds.lib nicht korrekt wären:
1
irun: *W,DLCPTH (./cds.lib,1): cds.lib Invalid path '~/design/INCA_libs/LIB1/' (cds.lib command ignored).
2
irun: *W,DLCPTH (./cds.lib,2): cds.lib Invalid path '~/design/INCA_libs/LIB2/' (cds.lib command ignored).
3
irun: *W,DLCPTH (./cds.lib,3): cds.lib Invalid path '~/design/INCA_libs/LIB3/' (cds.lib command ignored).

Ich habe nun die letzten 3h versucht das Problem zu beheben und endlos 
viele Kombinationen, andere Pfade, andere Angaben etc. versucht und 
scheitere immer wieder an dieser Stelle.
Wenn die libs nicht korrekt mit dem Verzeichnis verknüpft werden, können 
sie im Design auch nicht gefunden und verwendet werden.

Hat jemand ein Beispiel, an dem ich nachverfolgen kann, wie man ein 
Design von Beginn an mit irun (incl. der entsprechenden Optionen) 
compiliert und Cadence dann den entstehenden Snapshot weiter verarbeiten 
kann?

Ich habe mir auch schon irun -helpall angeschaut. Dort habe ich mir die 
oben verwendeten Optionen/Schalter zusammengesucht und wie es aussieht 
scheint er das machen zu wollen, was meine Intension war. Vielleicht 
liege ich aber auch hier daneben...

Vielen Dank!
Rainer

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Vermutlich kann irun nichts mit ‘~’ im Pfad anfangen. Jedenfalls sagt 
die Doku nichts darüber.

Da Du Anfänger zu sein scheinst, hier ein paar tips um Dich gleich 
einzunorden:

Mach's Dir nicht so kompliziert. Das mit den Libraries ist zwar schöne 
Theorie, aber vollkommen überflüssig. Mit Ausnahme riesiger 
Zellbibliotheken lohnt es sich nicht, Komponenten in unterschiedliche 
Libraries zu übersetzen. Wenn Du jetzt noch unterschiedliche Tools 
verwenden solltest, musst Du das jedes Mal neu machen. Änderungen in den 
jeweiligen config Dateien einpflegen, etc.
Das Verhältnis Übersetzungszeit/Simulationszeit is sehr klein.

Nimm, verdammt noch mal, eine richtige Shell. Es ist eine in der 
gesamten EDA Industrie verbreitetete Plage, dass Scripts in dieser 
unsäglichen T?CSH verfasst werden. Schlimmer als alleinstehende Scripts 
sind projektspezifische “source-files”, die eben nicht ausgeführt 
werden, sondern in die aktuelle Shell des Benutzers geladen werden. 
Benutzer die keine T?CSH verwenden sind dann ausgeschlossen. Mit 
POSIX-syntax sind Benutzer von bash/zsh/dash/ash/ksh/etc. zufrieden.
Schlimmer noch, üblicherweise ist tcsh sogar als login shell für alle 
Benutzer installiert. Der vermutliche Grund ist in Punkt 8 auf dieser 
Seite erklärt: http://www.shlomifish.org/open-source/anti/csh/
Auch ich habe mal mit tcsh angefangen und fand es (Mitte 90er) 
unheimlich cool, Autokorrektur auf der Kommandozeile zu haben.
Für Dein mini-Script oben ist es freilich egal, welche Shell zum Einsatz 
kommt.

Gut gemacht: Bleib fern von Makefiles. Die meisten EDA tools erkennen 
ihre Abhängigkeiten selbst. Die meisten Makefiles hingegen sind 
fehlerhaft.

von Tschaebe (Gast)


Lesenswert?

Ich erzeuge immer ein command file fuer irun, das ich dann mit der -f 
option aufrufe:
1
irun -f irun_file

Insgesammt also pro Simulation nur einen irun-Aufruf. Das funktioniert 
soweit ganz gut (inklusive erzeugen von libs)

Viele Gruesse,
Tschaebe
1
###############################################################################
2
# irun_file
3
###############################################################################
4
# Clean existing INCA_libs
5
-clean
6
+overwrite
7
8
# Include directory
9
-incdir ${SOME_ENV_SETTING}/verification/testbench
10
11
# Allow the module defined in one file to be redefined in other files
12
-allowredefinition
13
14
# Path to file containing verilog modules
15
-makelib models -f ${VERIFICATION_DIR}/vrun_files/verilog_models_list -endlib
16
17
# Path to file containing RTL or netlist files path
18
../path_to/some/source_file.v
19
../another_path/to/another_source_file.v
20
21
# Path to file containing SV file paths
22
-f ${VERIFICATION_DIR}/vrun_files/sv_list_file
23
${VERIFICATION_DIR}/testcase/${TEST_CASE}.sv
24
25
# Top module name
26
-top top_tb
27
28
-timescale 1ns/100ps
29
-access +r+w+c
30
31
# Opens simvision gui
32
-gui
33
#-linedebug
34
35
# Tcl file containing initialization commands
36
-input  ${VERIFICATION_DIR}/vrun_files/init_rtl.tcl

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.