R
Rob Dekker
Guest
Hi guys,
The translate_off/on pragmas are not standardized (apart from 1076.6 RTL_SYNTHESIS pragmas), but still very widely used across the
industry, to separate code for simulation from code for (RTL) synthesis.
I'm looking into tool interoperability of this pragma, and ran into the following interesting example :
entity test is
(i, clock : in bit ; o : out bit) ;
end entity test ;
architecture dff of test is
wait until ( clock = '1' and clock'event ) ;
o <= i -- synopsys synthesis_off
after 1 ns ;
-- synopsys synthesis_on
end process ;
end architecture dff ;
Note that the semicolon that closes the assignment statement is within the synthesis_off/synthesis_on pragmas.
That results in illegal VHDL (statement not terminated with a semicolon) when we ignore the code between the off/on pragmas.
I understand that 1076.6 also deems this illegal, but it specifies only the RTL_SYNTHESIS pragma, not the much more often
translate_off/on pragma's started by individual companies like Synopsys.
Tools based on Verific VHDL front-end (some 50 EDA tools) currently error out when running this example in synthesis mode (granting
the translate_off/on pragma's).
But I am not so sure about many other tools (including Synopsys DC itself).
So I have a request : Can you please try this example on your favorite synthesis and/or formal verification tool (or other tool that
is sensitive to translate_off/on pragmas) ?
I'd like to get to a point where all tools handle translate_off/on pragma's the same way.
Thanks !
Rob Dekker
The translate_off/on pragmas are not standardized (apart from 1076.6 RTL_SYNTHESIS pragmas), but still very widely used across the
industry, to separate code for simulation from code for (RTL) synthesis.
I'm looking into tool interoperability of this pragma, and ran into the following interesting example :
entity test is
(i, clock : in bit ; o : out bit) ;
end entity test ;
architecture dff of test is
wait until ( clock = '1' and clock'event ) ;
o <= i -- synopsys synthesis_off
after 1 ns ;
-- synopsys synthesis_on
end process ;
end architecture dff ;
Note that the semicolon that closes the assignment statement is within the synthesis_off/synthesis_on pragmas.
That results in illegal VHDL (statement not terminated with a semicolon) when we ignore the code between the off/on pragmas.
I understand that 1076.6 also deems this illegal, but it specifies only the RTL_SYNTHESIS pragma, not the much more often
translate_off/on pragma's started by individual companies like Synopsys.
Tools based on Verific VHDL front-end (some 50 EDA tools) currently error out when running this example in synthesis mode (granting
the translate_off/on pragma's).
But I am not so sure about many other tools (including Synopsys DC itself).
So I have a request : Can you please try this example on your favorite synthesis and/or formal verification tool (or other tool that
is sensitive to translate_off/on pragmas) ?
I'd like to get to a point where all tools handle translate_off/on pragma's the same way.
Thanks !
Rob Dekker