read-during-write RAM warning

#5614466
Lesenswert?

Bei mir kommt folgendes Stück Code im Design vor:
1
always @(posedge AWGclk) begin
2
  if(serviceUartRXctrlStrobe)  
3
    begin
4
    if("S"==RXchar)  begin ram[WriteAddress]<=WriteData ; end 
5
    end
6
   else 
7
    begin 
8
    counter<=counter+1'd1 ;
9
    dac902<=ram[counter] ;
10
    end
11
  end
Es wird das "ram" geschrieben und gelesen.
Ich erhalte die folgende Warnung:

Warning (276020): Inferred RAM node "ram_rtl_0" from synchronous design 
logic.  Pass-through logic has been added to match the read-during-write 
behavior of the original design.

Jetzt weiss ich aber, dass kein "read during write" stattfinden kann, 
weil das "write" im if-block ist, und der "Read" im else-Block. Wie muss 
ich das schreiben damit Quartus keine Warnung mehr liefert?
Gast #5614480
Lesenswert?

Die Warnung sagt nicht, dass du read-during-write machst, sondern dass 
das Tool versucht das beschriebene Verhalten für diesen Fall abzubilden. 
Und das sieht bei dir so aus, dass du beim Schreiben mit der 
Schreibadresse nicht den Leseausgang beeinflusst. Schreibst du mehrmals 
hintereinander, bleibt der Ausgang gleich, da braucht es also ein 
Register mit read_enable am Ausgang, und das macht das Tool.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren