0

I'm encountering an issue with Vivado where zero-padding in my VHDL code is not being preserved in the elaborated design and results in Implementation Error. Here's a brief overview of the problem:

I have a 14-bit counter in my VHDL design, and I need to concatenate it with zeros to form a 32-bit signal before assigning it to a RAM input. I achieved this using the following code snippet:

ram_input <= "000000000000000000" & i;

Here is the elaborated design snapshot, where zeros are missing to make ram_input 32-bit wide, it just take counter i (14-bits) value: enter image description here

In simulation, everything works as expected, and the counter value is correctly padded with zeros. However, in the elaborated design generated by Vivado, only the 14 bits of the counter seem to be considered, disregarding the zero-padding.

Has anyone else encountered a similar issue with Vivado or other synthesis tools? Are there any specific settings or techniques I should be aware of to ensure that zero-padding is preserved in the elaborated design?

I want to expect suggested way to append zeros with i (std_logic_vector) to make it 32-bit wide and could see the block in Elaborated Design. Now, it just take counter i value as an Input.

3
  • 2
    Synthesis tools remove all unused or constant logic to keep the design as small as possible. So you will not see signals which are clamped at 0 or 1 in your netlist. But of course the design will behave as simulated. Commented Mar 25, 2024 at 12:11
  • But, I'm more interested in Implementation part. How can I implement this logic to make it 32 bit wide by appending zeros at MSB locations with counter i, having 14 bits output value. Commented Mar 25, 2024 at 18:39
  • 2
    If you read back the 32 bit value, it will be padded with zeros Commented Mar 25, 2024 at 23:30

1 Answer 1

0

There are a couple of things that you can try. First, using the dont_touch attribute on the input and output registers should work. Secondly, you can use the Out of Context mode to synthesize your design. This will preserve every module ports and you will be able to implement it as you intend.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.