Hallo!
Ich möchte in einem Spartan 3A ein registriertes Signal einerseits
intern im FPGA weiterverwenden, andererseits auch nach außen ausgeben,
und zwar über einen IOB Register.
Da ich das Signal also auch als internes Feedback für andere FFs nutze,
muss ich für das IOB FF eine zweite Kopie (mit Fanout = 1) erzeugen. Das
versuche ich so:
1 | signal reg_fuer_intern : std_logic := '0';
|
2 | signal reg_fuer_IOB : std_logic := '0';
|
3 |
|
4 | attribute KEEP : string;
|
5 | attribute KEEP of reg_fuer_intern : signal is "true";
|
6 | attribute KEEP of reg_fuer_IOB : signal is "true";
|
Und dann:
1 | process (clk)
|
2 | begin
|
3 | if rising_edge(clk) then
|
4 | reg_fuer_intern <= NOT kombinatorisches_signal; -- für FF zu intern
|
5 | reg_fuer_IOB <= NOT kombinatorisches_signal; -- nochmal für FF für IOB
|
6 | end if;
|
7 | end process;
|
Trot KEEP wird jedoch das eine FF wegoptimiert und ich bekomme die
Meldung, dass das FF nicht in den IOB gesetzt werden kann.
Mache ich etwas mit dem KEEP falsch, oder muss ich doch die
Syntheseoption "Equivalent Register Removal" für das komplette Design
abschalten, damit es klappt? Das würde ich nur ungern tun.
Danke für jeden Tipp!
Update: Habe jetzt "Equivalent Register Removal" und "Ressource Sharing"
abgeschaltet. Es klappt immer noch nicht:
1 | ERROR:Pack:2604 - The register
|
2 | Inst_MY_interface/Inst_MYSUB_interface/reg_fuer_IOB has the property
|
3 | IOB=FORCE, but was not packed into the output side of an I/O component. The
|
4 | output register symbol
|
5 | "Inst_MY_interface/Inst_MYSUB_interface/reg_fuer_IOB" has an output
|
6 | signal with a "KEEP" property and must remain externally visible by appearing
|
7 | on a component pin.
|
8 | The output register symbol
|
9 | "Inst_MY_interface/Inst_MYSUB_interface/reg_fuer_IOB" has an output
|
10 | signal with a "KEEP" property and must remain externally visible by appearing
|
11 | on a component pin.
|
2. Update: Die "KEEP" Attribute scheinen ihn jetzt wiederum zu stören,
wenn ich die auskommentiere, scheint es doch zu gehen...
Grüße,
Anguel