Re: FPGA coding style Behavioural vs structural Modelling
Ok I have now manged to test the code on hardware and it is behaving (functional testing so far).
However, when I generated the .bit file, Xilinx ISE gave the following error:
Code VHDL - [expand] |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| ERROR:Place:1108 - A clock IOB / BUFGMUX clock component pair have been found
that are not placed at an optimal clock IOB / BUFGMUX site pair. The clock
IOB component <ISA_CLK> is placed at site <P1>. The corresponding BUFG
component <ISA_CLK_BUFGP/BUFG> is placed at site <BUFGMUX_X2Y3>. There is
only a select set of IOBs that can use the fast path to the Clocker buffer,
and they are not being used. You may want to analyze why this problem exists
and correct it. If this sub optimal condition is acceptable for this design,
you may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf file to demote
this message to a WARNING and allow your design to continue. However, the use
of this override is highly discouraged as it may lead to very poor timing
results. It is recommended that this error condition be corrected in the
design. A list of all the COMP.PINs used in this clock placement rule is
listed below. These examples can be used directly in the .ucf file to
override this clock rule.
< NET "ISA_CLK" CLOCK_DEDICATED_ROUTE = FALSE; > |
I was not sure about the cause of this error so I just added the last line:
Code VHDL - [expand] |
1
| NET "ISA_CLK" CLOCK_DEDICATED_ROUTE = FALSE; |
in my constraints file & the error disappeared.
My 1st question: is it the correct way of dealing with the above error? Could I get any problems later on due to this issue?
Second question I have used 4 Addresses in my code as:
Code VHDL - [expand] |
1
2
3
4
5
6
7
| if (ISA_ABUS_IN = X"0500")
-----------
-----------
elsif (ISA_ABUS_IN = X"0501")
--- ETC |
& then another for 0x0502
Is there a way to declare these addresses as variables with some name like: Address1, Address2, etc on the top near Signals and initialise them with the address values e.g.,
Address1 = 0x0500
Address2 = 0x0501
Address3 = 0x0502
and so on
& then I use "Address1" in the if statement instead of its actual value?
What is the syntax to do like this in VHDL?