Closed Fatsie closed 5 years ago
This would be in the hold data of the receiving flip flop.
Matthew Guthaus Professor, Computer Science and Engineering University of California Santa Cruz https://www.soe.ucsc.edu/people/mrg
On Thu, May 23, 2019, 03:39 Staf Verhaegen notifications@github.com wrote:
The current SRAM design exposes the sense amplifier directly on the output. This means that during precharge the output of DOUT is in undetermined digital state. This is reflected in the verilog code in the following way:
always @(posedge clk0) begin ... DOUT0 = 8'bx;
This mean that if there is a path from DOUT to the input of a flip-flop that also is clocked on the rising edge, hold violations may occur. I have to admit I am not a liberty file or STA expert but I don't seem to find the needed data in the .lib that allows to check for this hold violation. I would expect that retain data is needed for DOUT on rising edge of the clock to make this possible. I am currently targeting 0.35um so with a well controlled skew on the clock tree hold violations should not be a problem but for smaller nodes I think this becomes a necessity.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/VLSIDA/OpenRAM/issues/47?email_source=notifications&email_token=AC67SLZ45YYI5G2LID7YTF3PWZX5RA5CNFSM4HO6BX5KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GVNQSMA, or mute the thread https://github.com/notifications/unsubscribe-auth/AC67SL7BB3DAJM7JTM45I2TPWZX5RANCNFSM4HO6BX5A .
I don't get it. In order to know when the hold timing of the flipflop is violated the STA needs to know when the DOUT of the SRAM becomes 'x' . I don't see how the STA tool can get this data out of the RAM .lib.
The current SRAM design exposes the sense amplifier directly on the output. This means that during precharge the output of DOUT is in undetermined digital state. This is reflected in the verilog code in the following way:
This mean that if there is a path from DOUT to the input of a flip-flop that also is clocked on the rising edge, hold violations may occur. I have to admit I am not a liberty file or STA expert but I don't seem to find the needed data in the .lib that allows to check for this hold violation. I would expect that retain data is needed for DOUT on rising edge of the clock to make this possible. I am currently targeting 0.35um so with a well controlled skew on the clock tree hold violations should not be a problem but for smaller nodes I think this becomes a necessity.