Soft-Core Processor Design - CiteSeer
Soft-Core Processor Design - CiteSeer
Soft-Core Processor Design - CiteSeer
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
FPGA design flow is a random function of the circuit design and a seed. “A seed is a parameter<br />
that affects the random initial placement of the Quartus II fitter” [16]. The Quartus II<br />
documentation suggests that the seed value has small influence on the final compilation result<br />
[16]. However, our experiments show that the seed may have a large impact on the compilation<br />
results. We analyzed the compilation results of the UT Nios based system using 20 different<br />
seeds, and found that the results varied as much as 14.9%. Furthermore, exploring how the<br />
compilation results of seven different systems vary with different seeds, we found that on<br />
average, the difference between the best and the worst case over 20 seeds was 12.4%. But, the<br />
difference between the best and the average case was only 5.6% in this experiment. Therefore, we<br />
believe that the designers should always do a seed sweep as part of the recommended design<br />
process. The seed value does not influence the number of LEs required for the design<br />
implementation; it influences only how the LEs are placed inside the device.<br />
The compilation result variations affected the methodology used in this work. We based our<br />
design decisions on the results from the timing analysis provided by Quartus II. Since the initial<br />
placement changes whenever the netlist changes, we compiled each design with multiple seeds,<br />
and based the decisions on the maximum Fmax values obtained. The fluctuations in the Fmax have<br />
another implication on the design process that we have observed. Since the development board<br />
contains only a 50 MHz clock signal, we have used PLLs to synthesize the appropriate clock<br />
speed for the system. The system has to be compiled once before introducing the PLL to<br />
determine the Fmax. However, when the PLL that produces the clock signal with the obtained Fmax<br />
is introduced in the design, the new compilation result often does not achieve the previously<br />
obtained Fmax. Therefore, the design has to be compiled several times again, with different seeds,<br />
until the seed that produces the original Fmax is found. Another option is to use the Quartus II<br />
LogicLock feature. The feature enables users to lock the placement and routing of the circuit, or<br />
part of the circuit, so the performance of that circuit remains constant when other modules are<br />
added to the design and the design is recompiled.<br />
The nature of state machine processing is another synthesis parameter available in Quartus II<br />
that may have a significant impact on the performance of some designs. The state machine<br />
processing defines how the states in a state machine are encoded. The available options are:<br />
minimal bits, one-hot, user-encoded, and auto (compiler selected). The state machines in the<br />
Verilog design files are automatically recognized if the state machine specification follows the<br />
guidelines outlined in [16]. The value of the state machine processing parameter has very little<br />
effect on our current design (less than 1%). However, at one point during the design process, the<br />
control unit state machine had 14 states. Encoding the states using one-hot encoding in that case<br />
83