Perl aplikace EDA

J

jimjim2k

Guest
Ahoj všem

Jak jsem slíbil v roce:

1.h ** p: / / www.edaboard.com/viewtopic.php?t=98320

I start shromáždit užitečné skripty v Perlu na EDA zde:

Prosím, pomozte získat toto téma

-------------------------------------------------- -----------------------------------
1.Spectre na hspice converion nástroj:Kód:

#! / Usr / bin / perl

# Nelson Hu

# EE464H

# 08/07/03################################################## #####

# Tento program "Spectre2Hspice.pl" generuje Hspice kód

# Spectre netlist (si.inp)

# Výstupy tohoto programu pak bude moci spustit v Hspice

# Pro načasování analýzy################################################## #####

# Jak používat tento program:

# Ve složce Kde je si.inp nalezen, zadejte

# Perl / home/projects/abraham/vlsi464/spicetest/FinalTOOLS/Spectre2Hspice.pl si.inp 3

# Číslo 3 na konci je rozlišení pro načasování analýzy.
to je delší zpoždění, větší počet je používán

# Takže při spuštění Hspice, kód neporušil.################################################## #####

# Vstup:

# Si.inp

# Číslo pro rozlišení.################################################## #####

# Výstup:

#% CELLNAME%. Sp################################################## #####

# Přechodnou dobu a výstup kapacita

# Hspice budou používat tyto dva sloupce k vytvoření matice načasování analýzy

################################################## ###### Přechodnou dobu

@ = QW * 5ps 50ps 100ps 150ps 200ps 250ps 300ps *;

# Kapacitní

@ B = QW * 0ff 3.5ff 17.5ff 35ff 87.5ff 105ff 231ff *;# Před 07/19/03

# @ A = QW * 0 10.695ps 40.71ps 70.75ps 156.49ps 301.6ps 591.8ps *;

# @ B = QW * 0 2FF 8FF 20FF 50FF 100FF 200FF *;# Seokjin navrhl

# @ A = QW * 0.03ps 0.1ps 0.4ps 0.9ps 1.5ps 2.2ps 3Ps *;

# @ B = QW * 0.00035pf 0.021pf 0.0385pf 0.084pf 0.147pf 0.231pf 0.3115pf *;################################################## #####

# Dostat název souboru (obvykle si.inp)

################################################## #####

otevřít LaLa, "$ argv [0]";

@ Line = <LALA>;

Zavřít LaLa;################################################## #####

# Dostat druhý argument, rozlišení

################################################## #####

$ Hp = $ argv [1];################################################## #####

# Získat název buňky, ze si.inp a použití

# Název buňky vytvořit% CELLNAME%. Sp

################################################## #####

foreach (@ line) (

if ($ _ = ~ / Design buněk název: /) (

@ Temp = split / /,$_;

$ Filename = $ temp [$ # temp];

žvýkat $ filename;))otevřít HSPICE, "> $ filename.sp";################################################## #####

# Hledat brány a počet vstupních

# $ OtherInput je buď "GND", nebo "VDD".

# To specifikuje pro více vstupů do tie všechny na GND a VDD

# $ Inverted je buď "T" nebo "F".

# Říká, že program je brána obrácené

# Této části je nutno doplnit o nový typ logiky buněk

################################################## #####$ NumberOfInput = $ filename;

if ($ filename = ~ / inv /) (

$ NumberOfInput = 1;

$ Output = "Z";

$ = Obráceného "T";)

elsif ($ filename = ~ / buf /) (

$ NumberOfInput = 1;

$ Output = "Z";

$ Obrácené = "F";)

elsif ($ filename = ~ / MUX /) (# nemusí fungovat

$ NumberOfInput = 3;

$ OtherInput = "VDD";

$ Output = "Z";

$ Obrácené = "F";)

elsif ($ filename = ~ / NAND /) (

$ NumberOfInput = ~ s / NAND / / g;

$ NumberOfInput = ~ s / x [\ d] / / g;

$ OtherInput = "VDD";

$ Output = "Z";

$ = Obráceného "T";)

elsif ($ filename = ~ / ani /) (

$ NumberOfInput = ~ s / ani / / g;

$ NumberOfInput = ~ s / x [\ d] / / g;

$ OtherInput = "GND";

$ Output = "Z";

$ = Obráceného "T";)

elsif ($ filename = ~ / xor /) (

$ NumberOfInput = ~ s / xor / / g;

$ NumberOfInput = ~ s / x [\ d] / / g;

$ OtherInput = "GND";

$ Output = "Z";

$ Obrácené = "F";)

elsif ($ filename = ~ / a /) (

$ NumberOfInput = ~ s / a / / g;

$ NumberOfInput = ~ s / x [\ d] / / g;

$ OtherInput = "VDD";

$ Output = "Z";

$ Obrácené = "F";)

elsif ($ filename = ~ / nebo /) (

$ NumberOfInput = ~ s / nebo / / g;

$ NumberOfInput = ~ s / x [\ d] / / g;

$ OtherInput = "GND";

$ Output = "Z";

$ Obrácené = "F";)if ($ NumberOfInput == 1) (

$ Input = "";)

if ($ NumberOfInput == 2) (

$ Input = "B";)

if ($ NumberOfInput == 3) (

$ Input = "AB C";)

if ($ NumberOfInput == 4) (

$ Input = "ABC D";)

if ($ NumberOfInput == 5) (

$ Input = "ABCD E";)$ InOut = $ input. "". $ Výstup;################################################## #####

# Nahradit "\" a návrat vozíku (v případě, že linka je příliš dlouhý)

# S carriage return a " " v HSPICE formátu

################################################## #####

for ($ n = 0; $ n <= $ # line; $ n ) (

if ($ line [$ n] = ~ / \ \ \ n /) (

žvýkat $ line [$ n];

chop $ line [$ n];

$ Line [$ n] .= $ line [($ n 1)];

$ Line [$ n] = ~ s / / / g;)

)################################################## #####

# Aby se jich zbavil všech tratích s výjimkou jednoho začíná

# _inst

################################################## #####

$ N = 0;

foreach (@ line) (

if ($ _ = ~ / _inst \ d /) (

$ Nová [$ n] = $ _;

$ N ;)

)

################################################## #####

# Nahradit _inst s * C nebo M * a uzavřít slovo

# Kondenzátor a region = sat.
také uzavřít "(", ")", "!"

################################################## #####

$ M = 1; $ c = 1;

foreach (@ nové) (

if (($ _ = ~ / tsmc20P /) nebo ($ _ = ~ / tsmc20N /)) (

$ _ = ~ S / _inst [\ d] / M $ M / g;

$ M ;)

if ($ _ = ~ / kondenzátor /) (

$ _ = ~ S / _inst [\ d] / C $ C / g;

$ C ;

$ _ = ~ S / kondenzátor / / g;)

$ _ = ~ S / region \ = sat / / g;

$ _ = ~ S / \ (/ / g;

$ _ = ~ S / \) / / g;

$ _ = ~ S / \! / / G;

$ _ = ~ S / / / g;)################################################## #####

# Duplicitní m, pokud m je větší než 2

################################################## #####foreach (@ nové) (

@ Hodnoty = split / /,$_;

$ Hodnoty [$ # hodnoty] = ~ s / m = / / g;

$ Temp = $ hodnoty [$ # hodnoty];

žvýkat $ temp;

$ Hodnoty [$ # hodnoty] = "\ n";

$ _ = Připojit se "," @ hodnoty;

$ Temp -;

$ Copy = $ _;

pro (1 .. $ temp) (

$ Nová [$ # nové 1] = $ kopie;

@ Změna = split / /, $ nová [$ # nové];

if ($ změna [0] = ~ s / M [\ d] / M $ M / g) (;

$ M ;)

if ($ změna [0] = ~ s / C [\ d] / C $ C / g) (;

$ C ;)

$ Nová [$ # nové] = Přidej se "," @ změny;

))################################################## #####

# Výměna w, l, as, reklamní, PS, PD

################################################## #####foreach (@ nové) (

@ Hodnoty = split / /,$_;

if ($ hodnoty [0] = ~ / M (\ d) /) (

($ Hodnoty [7], $ hodnoty [6]) = ($ hodnoty [6], $ hodnoty [7]);

($ Hodnoty [9], $ hodnoty [8]) = ($ hodnoty [8], $ hodnoty [9]);

($ Hodnoty [11], $ hodnoty [10]) = ($ hodnoty [10], $ hodnoty [11]);)

$ _ = Připojit se "," @ hodnoty;)################################################## #####

# Přidání začátku souboru

################################################## #####$ Střední = Připojit "", @ nové;

$ Střední = ~ s / \ n / \ n / g;$ Top_middle = "\ *". $ Filename. ". Sp \ n.options SPICE NOMOD Autostop LVLTIM = 3 \ n.param ttra = 0.1n LV = 0.1e-12 \ n.temp 27 \ n \ n.include \ "/ usr/local/packages/cadence/local/models/hspice/standalone/tsmc20P.m \" \ n.include \ "/ usr/local/packages/cadence/local/models/hspice/standalone/tsmc20N.m \ "\ n.global VDD \ n.global GND \ n \ n \ n.subckt $ filename $ InOut \ n".
$ Uprostřed. ". Skončí \ n";################################################## #####

# Find počet vstupních

################################################## #####

@ Input = split / /, $ input;

$ N_input = $ # vstup, # počet vstupních - 1

$ G = "GND";

$ V = "VDD";

$ I = "input";

$ O = "výstup";žvýkat hp $;

$ Období = $ hp $ hp;

$ Wholeperiod = $ období $ hp;

$ Rozlišení = (($ doba 1) / 10000);print "je rozlišení". $ rozlišení. "\ n";$ Lastpart = "X". $ Filename. $ $ I. OtherInput x $ n_input. $ O. "". $ Filename. "\ NCLOAD". $ $ O. G. "LV \ n \ NVA". $ I. $ G. "PULSE \ (0,3.3,1 p, Ttra, Ttra". $ hp. "n". $ období. "n \) \ n \ nvdd". $ $ V. G. "3,3 \ n \ n ";################################################## #####

# Middie-poslední část

################################################## #####

if ($ obráceného eq "T") (

$ Abc = ". MEAS TRAN cell_rise TRIG V ($ I) val = 1,65 TD = 0n pád = 1 \ n \ tTARG V ($ O) val = 1,65 vznik = 1 \ n".

". MEAS TRAN cell_fall TRIG V ($ I) val = 1,65 TD = 0n vznik = 1 \ n \ tTARG V ($ O) val = 1,65 pád = 1 \ n".

". MEAS TRAN rise_slew TRIG V ($ O) val = 0,33 TD = 0n vznik = 1 \ n \ tTARG V ($ O) val = 2,97 vznik = 1 \ n".

". MEAS TRAN fall_slew TRIG V ($ O) val = 2,97 TD = 0n pád = 1 \ n \ tTARG V ($ O) val = 0,33 pád = 1 \ n".

". TRAN". $ Řešení. "N". $ Wholeperiod. "N zamést DATA = DATNM \ n";)

elsif ($ obrácené eq "F") (

$ Abc = ". MEAS TRAN cell_rise TRIG V ($ I) val = 1,65 TD = 0n vznik = 1 \ n \ tTARG V ($ O) val = 1,65 vznik = 1 \ n".

". MEAS TRAN cell_fall TRIG V ($ I) val = 1,65 TD = 0n pád = 1 \ n \ tTARG V ($ O) val = 1,65 pád = 1 \ n".

". MEAS TRAN rise_slew TRIG V ($ O) val = 0,33 TD = 0n vznik = 1 \ n \ tTARG V ($ O) val = 2,97 vznik = 1 \ n".

". MEAS TRAN fall_slew TRIG V ($ O) val = 2,97 TD = 0n pád = 1 \ n \ tTARG V ($ O) val = 0,33 pád = 1 \ n".

". TRAN". $ Řešení. "N". $ Wholeperiod. "N zamést DATA = DATNM \ n";)################################################## #####

# Liší kapacitní a zpoždění

# Změna @, @ b na vrcholu

################################################## #####

@ C;

$ # C = 0;

foreach $ (@) (

foreach $ b (@ b) (

$ C [$ # c ] = ($ a. "\ t". $ B. "\ n ");}}

$ C = Připojit se "," @ c;

$ C = ~ s / \ n / \ n / g;$ Datnm = ". DATA DATNM \ nTtra \ TLV \ n $ c.ENDDATA \ n";# Print $ datnm;################################################## #####

# Změna. Změnit

################################################## #####

@ Poslední;

$ Count = 2;

pro (1 .. $ n_input) (

$ Poslední [0] = "X $ filename";

$ Poslední [1] = $ OtherInput;

pro (1 .. $ n_input) (

$ Poslední [$ _ 1] = $ OtherInput;)

$ Poslední [$ count ] = $ I;

$ Poslední .= ". Měnit \ n (at) posledních $ O $ filename \ n";

)

$ Poslední .= ". Konci \ n";################################################## #####

# Spojit všechny

################################################## #####$ Poslední = "$ top_middle". "\ N". "$ Lastpart". "$ Abc \ n". "$ Datnm". "\ N". "$ Poslední";

Tisk HSPICE $ v konečném znění;Zavřít HSPICE;
 
-------------------------------------------------- -----------------------------------
2.Různé EDA Formáty konverzí

Formátyblif2cnf

BLIF na překladatel CNF.Tento skript akceptuje jeden nebo více souborů ve formátu BLIF a převádí každý do formátu CNF (navržené v roce 1993, DIMACS výzvu na SAT).iscas2cnf

ISCAS'89 na překladatel CNF.Tento skript akceptuje jeden nebo více souborů ve formátu ISCAS'89 a převádí každý do formátu CNF (navržené v roce 1993, DIMACS výzvu na SAT).iscas2blif

ISCAS'89 na překladatel BLIF.Tento skript akceptuje jeden nebo více souborů ve formátu ISCAS'89 a převádí každý do formátu BLIF.mitra

Skript pro vytvoření turban mít dva okruhy popsány v ISCAS'89 formátu.Tento skript je užitečné pro rovnocennost kontroly.cnf2lp

Skript pro překládání instancí SAT (v CNF formátu) do formátu LP (používá lineárního programování Solver LP-řešení).

cnf2pbf

Skript pro překládání instancí SAT (v CNF formátu) do formátu PBF (používaný bsolo Řešitel BCP).

cnf2prime

Skript pro vytvoření instance BCP (v PBF formátu) pro výpočet minimální velikost-prime implicant z booleovských funkcí (ve formátu CNF).

bcp2pbf

Skript pro překládání případy BCP (ve formátu BCP používá Řešitel BCP Scherzo) do formátu PBF (používaný bsolo Řešitel BCP).

pbf2bcp

Skript pro překládání případy BCP v ormat PBF (používaný bsolo Řešitel BCP) do formátu BCP (používaný scherzo Řešitel BCP).

pbf2cnf

Skript pro překládání případy BCP ve formátu PBF (používaný bsolo Řešitel BCP) do formátu CNF.

pbf2lp

Skript pro překládání případy BCP ve formátu PBF (používaný bsolo Řešitel BCP) do formátu LP (používá lineárního programování Solver LP-řešení).

pbf2opb

Skript pro překládání případy BCP ve formátu PBF (používaný bsolo Řešitel BCP) do formátu OPB (používá pseudo Řešitel opbdp boolean).

2.1.h ** p: / / sat.inesc-id.pt / ~ jpms / scripts /

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------
3.Blif souboru do souboru SPICE

Skript Perl může přeložit blif souboru do souboru SPICE3.1.h ** p: / / www-unix.ecs.umass.edu / ~ kzhou /
3.2.h ** p: / / www-unix.ecs.umass.edu / ~ kzhou/blif2spice.pl* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

4.HDL2HTML

Tento skript PERL má soubor HDL (VHDL nebo Verilog) a vytváří ve formátu HTML verzi.To je užitečné pro navrhování recenze kód - zveřejnit svůj návrh na firemní intranet, e-mail, atd. ..Vedlejším produktem této utility je, že jelikož je v HTML, není snadno kopírovat nebo sestavené.

4.1.h ** p: / / www.millogic.com / downloads.htm

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

5.Verilog-Perl

Tato knihovna je určena jako stavební místo pro Verilog podporu v jazyce Perl.

5.1.h ** p: / / www.veripool.com / Verilog-perl.html
5.2.h ** p: / / cpan.uwinnipeg.ca / htdocs / Verilog-Perl /

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

6.ScriptSim

Bezproblémovou integraci Python, Perl, Tk a se svým VerilogŽ simulací.6.1.h ** p: / / www.nelsim.com/

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

7.Verilog : Verilog preprocesor

Verilog je preprocesor pro Verilog souborů, které představuje dva nové konstrukce na Verilog: libovolný kód začleňování a parametricky modul generace.Tyto funkce poskytují větší flexibilitu než VHDL 'generovat' prohlášení.

Verilog předzpracovává jeho vstupních souborů ve dvou krocích, pomocí programů s názvem vvparse.Během první fáze předzpracování, vměstky jsou prováděny žádné kód.Během druhé fáze předzpracování, moduly jsou parametricky vyřešen a všechny zdrojové soubory, které obsahují požadované parameterized modulu prohlášení zpracovávána.7.1.h ** p: / / www.mpce.mq.edu.au/ ~ sponzorské / Verilog /

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

8.Verilog do html převodník

Drsný Verilog Parser
Pokud napíšete skripty v Perlu získávat informace od Verilog soubory Můžete si myslet, že parser, který používá v2html analyzovat Verilog by mohla být vytržena použit v dalším skriptu.No to asi mohl - a já jsem se snažil, aby bylo snadné to udělat vyčlení parser od všech ostatních věcí, které dělá v2html.Nazval jsem to 'Drsný Verilog Parser', a dělal to perl modul.8.1.h ** p: / / www.burbleland.com/v2html/rvp.html

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

9.Verilog-PLI

Verilog:: PLI poskytuje možnost volat Verilog PLI funkcí od Perl.9.1.h ** p: / / www.veripool.com / Verilog-pli.html

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

10.Jak používat Perl ve vašem Verilog HDL Design Flow?

Každý, kdo navrhuje s Verilog HDL pravděpodobně unaveného generování modulu konkretizace v hierarchickém design, nebo vytvořením nové nejvyšší úrovně nebo nižší úrovni, Verilog HDL modul.Mám vytvořených pár skripty v Perlu, který bude automaticky generovat modul konkretizace, nejvyšší úrovně modul, a nižší úroveň modul pro vás.Tyto skripty v Perlu mohou být uplatněny zevnitř VI / vim / gVim, nebo DOS Command Window.Pokud jste jej dovolávat zevnitř VI, skript výstup bude vytištěn v aktuálním souboru.Pokud jste jej dovolávat zevnitř DOS Command Window, pak budete muset buď zkopírovat a vložit do svého souboru Verilog HDL nebo potrubí výstupu do nového souboru.

10,1 h ** p: / / www.ece.ucdavis.edu/ ~ jwwebb / using_perl_with_verilog.shtml

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

11.ScriptEDA

Tato stránka je věnována propojení skriptovacích jazyků jako je Perl, Python a Tcl na všechny volně dostupné EDA nástroje.11.1.h ** p: / / www-cad.eecs.berkeley.edu / ~ pinhong / scriptEDA /

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
-------------------------------------------------- -----------------------------------

12.Verilog Generátor kódu

Hardware Verilog jazyk pro popis
Verilog Hardware Popis jazyka (IEEE-1364) je jazyk určený pro model hardware systémů (zejména, ale v žádném případě výhradně, elektronické integrované obvody).

Základní jednotka v programu Verilog (často volají netlist) je modul.Modul lze přirovnat k podprogramu nebo funkce, ale lepší analogii, je představit každý modul jako malý IC.12,1 h ** p: / / www.dcs.gla.ac.uk/ ~ Wim / verilog_codegen.shtml

* -> T

tnx

-------------------------------------------------- -----------------------------------

 
hi jimjim2k,

jste udělali dobrou pomůckou pro začátečníky Perl, jako jsem já ..Díky moc.

Můžete navrhnout mi, kde najdu soft kopii nebo e-knihy "Mastering Perl / Tk" od O'Reilly.

prosím dejte mi vědět ...
Díky ještě jednou ..

 
jigjack napsal:

hi jimjim2k,jste udělali dobrou pomůckou pro začátečníky Perl, jako jsem já ..
Díky moc.Můžete navrhnout mi, kde najdu soft kopii nebo e-knihy "Mastering Perl / Tk" od O'Reilly.prosím dejte mi vědět ...

Díky ještě jednou ..
 
hi jimjim2k,

Díky za odpověď ...Našel jsem perl / tk odkaz zaslané vás být velmi užitečné ....

Můžete mi říct, jak se může i rozhraní paralelní / sériový port pomocí Perlu?

díky

 
jigjack napsal:

hi jimjim2k,Díky za odpověď ...
Našel jsem perl / tk odkaz zaslané vás být velmi užitečné ....Můžete mi říct, jak se může i rozhraní paralelní / sériový port pomocí Perlu?díky
 
Ahoj ............. post ABT skriptu, který generoval cofegaration regester soubor v Verilog z dokumentace.

 

Welcome to EDABoard.com

Sponsor

Back
Top