Verilog / LEC trik vprašanje

S

Shahzad40

Guest
Živjo,

Poglej naslednjo kodo:
input TX_IN;
reg [12:0] Rx;
Vedno @ (posedge CLK)
začeti
if (CLR)
....
....
Rx <= ~ TX_IN;
..
še
...
konec
Lahko kdorkoli povej mi s organ bo Rx [0] bo prevrnjenem za TX_IN ali vseh bitov Rx bo v obrnjenem TX_IN?
Razlog sem sprašuje je vzrok sem mislil samo LSB gets invertirani tako i spremenili kodo za
Rx [12:1] = 12'b0;
Rx [0] = ~ TX_IN;
in ko sem LEC dveh koda je LEC, o katerih so poročali, da sta dve oznaki sta unequivalent
S spoštovanjem,

 
Ne vem, če sem sama obravnava organ, in ki ste jih pokazale skoraj nobena koda, ampak vidim nič v originalni koda, ki določa Rx [12:1], da 12'b0;

Tako vaše spremembe, ki ga ta določi Rx [12:1], da 12'b0, ne more biti enakovreden stari eno.

Njegova ne dobre prakse za tovor a multi-bitni register z enim bitne vrednosti in prevzame druge bitov bo imel determinate vrednost.

RB

 
Naredite svojo kodo explict:

rx <= 13 (()) ~ TX_IN;

Ali

rx <= (12'd0, ~ TX_IN);

Ali

rx [0] <= ~ TX_IN;

odvisno od tega, kaj hočeš.

 
Hvala za odgovore:
Jaz pravim, da je prav v prvem delu tega kodeksa, če:
Rx <= ~ TX_IN;
pomeni, da je Rx [0] bo imel prevrnjenem za TX_IN in preostalim delom bitov Rx [12:1], so uninitiallized razliko Rx [0].In to ni dobro.Na vprašanje, zakaj se to ni dobro.

in spremenjeni različici, če:
Rx [12:1] = 12'b0;
Rx [0] = ~ TX_IN;
izrecno initializes za Rx [12:0]

 
Citat:

pomeni, da je Rx [0] bo imel prevrnjenem za TX_IN in preostalim delom bitov Rx [12:1], so uninitiallized razliko Rx [0].
In to ni dobro.
Na vprašanje, zakaj se to ni dobro.
 
Prosimo, preberite na kot imam to rešeno in sem bil presenečen, da nihče ni mogel odgovoriti na preprosta vprašanja verilog (I am a Newbie of Verilog).I izvedene sinteze in naredil LEC, da pridejo ven z pomemben zaključek:
Moj prvotni vprašanje:

input TX_IN;
reg [12:0] Rx;
Vedno @ (posedge CLK)
začeti
if (CLR)
....
....
Rx <= ~ TX_IN;
..
še
...
konec
Lahko kdorkoli povej mi s organ bo Rx [0] bo prevrnjenem za TX_IN ali vseh bitov Rx bo v obrnjenem TX_IN?

Odgovor je, da Rx [0] bo prevrnjenem za TX_IN ampak Rx [12:1] bodo vsi dobijo vrednost 1 in ne 0 in razlog je, da je orodje polnjenje 0s z TX_IN, da bo 13 bitov širok in nato uporabi inverzija.Če odstranite inverziji, Rx [12:1] gets 0s.
Moram preveriti to temeljito
S spoštovanjem

 
Ampak ti ni res odgovor na vprašanje Verilog.Vprašanje vas je odgovoril: "Kaj pa moje orodje verige storim, če sem nepopolno določite operacijo v Verilog?"

Porabili ste dneh ugotoviti kaj orodij predpostavlja, kadar ti niso izrecno navesti vaše vezje
za delovanje.Orodja nikoli ne bi smela domnevati karkoli.Moraš jim povedati vsega.

Moral bi vedeti, kaj natančno sintezo orodje ali simulatorju bo z vsako vrstico pišete, ker je koda napisana na tak način, da nič ni dvoumna, da ste, z drugimi oblikovalci, ali orodje.

Na koncu, je ta funkcija kaj boš pričakoval, da se izvaja?Tudi če je, njegove nevarne za let na kateri koli del orodja verigi dati guesses.Lahko bi uganila različno naslednjič.Ali drugačno orodje lahko obravnavajo različno.

V tem primeru se sredstvo je dodano ničlami, kar je skupno.Najemnin, vendar je to na vektor, ki je v logični operaciji je precej nevarno.

Ni velika skrivnost razkrila tukaj.Pisanje kode ta način je skupna Newbie napako.In sem na to napako, jaz tudi.Zelo slabo kodiranje tehniko.Vendar pa je del mojega prihodka je odvisna od ljudi, nadaljujejo, da bi ta napaka, da morda jaz ne bi smela biti popravljanje ljudi

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />RB

 
Ne jemljite stvari za vaše srce.Če ste brali moje vprašanje, sem prosila za preprosto in ravno vprašanje in nisem dobil odgovora od enega.Bom ponovite vprašanje:
"Ali lahko kdo pove mi organ bo Rx [0] bo prevrnjenem za TX_IN ali vseh bitov Rx bo obrnjenimi v TX_IN?
Razlog sem sprašuje je vzrok sem mislil samo LSB gets invertirani tako i spremenili kodo za
Rx [12:1] = 12'b0;
Rx [0] = ~ TX_IN;
in ko sem LEC dveh koda je LEC, o katerih so poročali, da sta dve oznaki sta unequivalent "

To ni bila moja koda in da je bil del čipa delajo za 10 let kot čipa.Prav tako je bilo, da je napisal guru, sem opazil, da ne gurus te vrste stvari, da se skrije ali izkažejo, ko se stvari lahko naredil na zelo preprost način.Sovražim to.Vem da bi moral biti jasen in preprost.To pomeni, da oznaka leži znotraj Verilog LRM specifikacije.
Dokazati točka, citiram v Verilog 2001 LRM sec 4.1.10 Bit-mudrih operaterji Page 48

"Ko se operanda neenake bitne dolžine, krajši operandu nič napolnjeni v najbolj pomembni bit"

Tukaj je koda polnjenje ničel v MSBs in nato izvaja inverzijo in da je razlog bomo flip-flops, ki se nanaša na ponastavitev.
Torej razlog, zakaj je bil LEC prikazuje unequivalent je, da sem določeno Rx [12:1], ki se 0 in če spremenite v vseh 1s na LEC prelazov.

Si predlagala naslednje v prejšnjem sporočilu.
- Nejasnosti v kodeksu
- Orodje, bo kakršno koli guesses
- To je nevarna
- To je napaka in
- To ni slabo kodiranje tehniko.
Vsi vaši predlogi so navadne Napačna glede na LRM.V LRM nikjer ne kaže, da uporaba tega stila, medtem ko so na veliko priložnost, ne rečem, da ne stori blah-blah
To je popoln, pravne in izrecno z orodjem point of view.Iz berljivost vidika
se strinjam, to je slabo.
Moram preveriti to kodo in experemented uporabo follwoing:
Verilog LRM
Cadence LEC (did rtl za RTL in RTL-na-netlist preverjanje)
Design Compiler (sinteza)
Synplicity
VCS
Xilinx XST
Videl sem skladnost s tem, kar sem rekel

To morda ne bo skrivnost za vas, ampak za mene je bila in jaz sem vesel, da sem preživel dni je (ne moj uradni čas).

Na koncu vas prosimo, da ne poda predloge, kot si brez nekaterih konkretnih spoznanj, smo logično in logiko Skupnosti prevladajo.

 

Welcome to EDABoard.com

Sponsor

Back
Top