Forum: FPGA, VHDL & Co. Bit mit dauer Value '0' soll nicht weg optimiert werden (ISE)


von Stefan K. (stefan82)


Lesenswert?

Hallo zusammen,
doch auch mal wieder ne Anfänger VHDL Frage ...
habe ein bit in einem Datenwort welches immer 0 sein wird ... will das 
aber nicht weg optimiert haben, da ich dann zwei vollständige Bytes habe 
die ich leicht ohne andere Module umbauen zu müssen weiter verarbeiten 
kann ... aber ISE sagt mir immer
1
xx has a constant value of 0 this FF will be trimmed during the optimization process.

Kann man der ISE irgendwie mitteilen, das bestimmte Signale nicht 
optimiert werden sollen?

Gruß

Stefan

von Falk B. (falk)


Lesenswert?

@  Stefan K. (stefan82)

>Kann man der ISE irgendwie mitteilen, das bestimmte Signale nicht
>optimiert werden sollen?

Wozu? In 99% der Fälle ist dies Optimierung absolut OK und bringt nur 
Vorteile. Deine Module arbeiten trotzdem genauso.

MFG
Falk

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Wie Falk schon sagte, was soll das bringen? ISE stellt einfach fest das 
das bit sich nie ändert und deshalb das Speicherelement für dieses 
nicht erzeugt wird sondern alle Signale die daran hängen auf konstant 0 
gesezt werden. Wenn du an das Signal wiederum eine andere Komponente 
anschließt ligt dort trozdem eine '0' an.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> will das aber nicht weg optimiert haben
Ich frage mich auch, wozu.
Wenn das da bleiben muß, damit irgendwelche constraints eingehalten 
werden (wenn das Signal wegoptimiert ist und damit fehlt, können die 
nicht eingehalten werden :-o), dann bleibt dir nur der Weg, wie Xilinx 
es z.B. beim PCI-Core macht: Das Ding muß in ein Register.
1
signal nichtwegoptimieren : std_logic_vector(7 downto 0);
2
:
3
process (clk, reset) begin
4
   if (reset='1') then
5
      nichtwegoptimieren <= x"AA";
6
   elsif rising_edge(clk) then
7
      nichtwegoptimieren <= x"55";
8
   end if;
9
end process;

von Jens B. (sio2)


Angehängte Dateien:

Lesenswert?

Ist somit

architecture Behavioral of pwm_sub is
signal value: std_logic_vector (15 downto 0) :="0000000000000100";
signal oc_sig : std_logic :='0';
begin
  process (clock_in)
    begin
      if rising_edge (clock_in) then
        if (value=0) then
          oc_sig <='1';
        end if;
        if (value = counter_in) then
          oc_sig <= '0';
        end if;
      end if;

  end process;
  oc <= oc_sig;
end Behavioral;

korrekt? Ich bekomme nämlich die Meldung
" FF/Latch <oc_sig> has a constant value of 0 in block <pwm1>. This 
FF/Latch will be trimmed during the optimization process."
und weis nicht wie ich die Warnung wegbekomme.

von Gustav (Gast)


Lesenswert?

Das Signal "value" bekommt nirgends einen neuen Wert zugewiesen, kann 
daher nie 0 sein und daher bleibt oc_sig auf 0.

von Jens B. (sio2)


Lesenswert?

argh Danke.

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.