T
thutt
Guest
Hi,
I've got a design that is in working order, albeit with a little more
diagnostic signals still in the source than I really want. I am using
the Xilinx Spartan 3E board, and I tend to use the on-board LEDs for
diagnostic purposes.
To that end, I have an entity which controls the PS/2 keyboard
connected to my home brew computer with the following declaration:
entity harp_keyboard_controller is
generic (clock_rate : natural); -- clock speed in Hz
port(clk : in std_logic;
--->>> kbd_leds : out std_logic_vector(7 downto 0);
kbd_clk : inout std_logic; -- keyboard clock signal
kbd_data : inout std_logic; -- keyboard data signal
interrupt : out boolean;
reset : in std_logic;
enable : in boolean;
write : in boolean;
address : in std_logic_vector(1 downto 0);
data_size : in ram_types.memory_size_t;
data_write : in std_logic_vector(7 downto 0);
data_read : out std_logic_vector(7 downto 0);
ready : out boolean);
end entity harp_keyboard_controller;
The 'kbd_leds' output signal was used for diagnostics, but is no
longer needed. Because I've been burned so many times by making large
changes to my source and then having the Xilinx tools generate
something that no longer functions properly, I took a stepwise
approach and first just removed the assignments to 'kbd_leds' in the
'harp_keyboard_controller' entity.
I rebuilt my project and it still worked.
At this point, 'kbd_leds' is not assigned inside
'harp_keyboard_controller', so then I tried to remove the signal from
the entity declaration, and the corresponding assignment in the
instantiation of the 'harp_keyboard_controller' entity.
I rebuilt my project and it fails to function properly.
I added both of the latter two removed items, rebuilt and the project
works.
I then removed the assignment to the 'kbd_leds' signal in my top-level
entity and rebuilt. The project still functions properly.
It's only when I remove the signal declaration from
'harp_keyboard_controller' that the project fails to function
properly.
I'm a software guy trying to do things with hardware, and while I've
learned a lot in the past 18 months, I am confounded by what appears
to be lack of quality in the Xilinx toolchain. It doesn't seem to me
that removing a completely unused signal should have an affect on the
resulting synthesized hardware.
Am I misunderstanding something, or is the Xilinx software really that
bad? In other words, should removing a completely unused signal cause
my design to be synthesized in a way so that it no longer works?
If that's the case, then can you explain to me how that can be?
thanks for any help or advice
--
Hot glass looks just like cold glass.
I've got a design that is in working order, albeit with a little more
diagnostic signals still in the source than I really want. I am using
the Xilinx Spartan 3E board, and I tend to use the on-board LEDs for
diagnostic purposes.
To that end, I have an entity which controls the PS/2 keyboard
connected to my home brew computer with the following declaration:
entity harp_keyboard_controller is
generic (clock_rate : natural); -- clock speed in Hz
port(clk : in std_logic;
--->>> kbd_leds : out std_logic_vector(7 downto 0);
kbd_clk : inout std_logic; -- keyboard clock signal
kbd_data : inout std_logic; -- keyboard data signal
interrupt : out boolean;
reset : in std_logic;
enable : in boolean;
write : in boolean;
address : in std_logic_vector(1 downto 0);
data_size : in ram_types.memory_size_t;
data_write : in std_logic_vector(7 downto 0);
data_read : out std_logic_vector(7 downto 0);
ready : out boolean);
end entity harp_keyboard_controller;
The 'kbd_leds' output signal was used for diagnostics, but is no
longer needed. Because I've been burned so many times by making large
changes to my source and then having the Xilinx tools generate
something that no longer functions properly, I took a stepwise
approach and first just removed the assignments to 'kbd_leds' in the
'harp_keyboard_controller' entity.
I rebuilt my project and it still worked.
At this point, 'kbd_leds' is not assigned inside
'harp_keyboard_controller', so then I tried to remove the signal from
the entity declaration, and the corresponding assignment in the
instantiation of the 'harp_keyboard_controller' entity.
I rebuilt my project and it fails to function properly.
I added both of the latter two removed items, rebuilt and the project
works.
I then removed the assignment to the 'kbd_leds' signal in my top-level
entity and rebuilt. The project still functions properly.
It's only when I remove the signal declaration from
'harp_keyboard_controller' that the project fails to function
properly.
I'm a software guy trying to do things with hardware, and while I've
learned a lot in the past 18 months, I am confounded by what appears
to be lack of quality in the Xilinx toolchain. It doesn't seem to me
that removing a completely unused signal should have an affect on the
resulting synthesized hardware.
Am I misunderstanding something, or is the Xilinx software really that
bad? In other words, should removing a completely unused signal cause
my design to be synthesized in a way so that it no longer works?
If that's the case, then can you explain to me how that can be?
thanks for any help or advice
--
Hot glass looks just like cold glass.