>Ist es möglich, je nach dem ob ich Simuliere oder Syntese
>durchführe die Konstante mit unterschiedlichen Werten zu belegen?
>Die Konstanten legen lange Wartezeiten (ms-Bereich) fest und für
>die Simulation ist es übersichtlicher mit kleineren Werten zu arbeiten.
Solche Probleme löse ich meist durch Test-Parametrierung: Jedes
relevante FPGA-Modul wird mit einem Testport versehen, der Inputs,
Outputs und Parameter im Modul je nach gewünschter Funktion umschaltet.
Gesteuert wird das ganze über Bits, die innen mit einer If-Anweisung die
passenden Werte und Signale setzen (ist faktisch ein Multiplexer) und
aussen im globalen Design zu einem Testvektor zusammengeführt werden.
Dieser Testvektor kommt auf reale FPGA-Pins, die gfs per
Test-Port-Parameter-Pin mit anderen realen Eingängen gemultiplexed
werden müssen (s.u). In der Simulation reicht es dann, dem FPGA einen
passenden Vektor mit auf den Weg zu geben. In der realen Synthese kann
man die Funktion während der Entwicklung drin lassen, um das Chip zu
testen, oder man setzt den parametrierenden Vektor kurz vor der Synthese
auf auf Null. Dank der Optimierungen der Synthesetools fliegen dann alle
diese Konstrukte raus.
Wenn man es etwas aufwändiger treiben möchte oder aufgrund sehr
komplizierter Teststrukturen und der damit verbundenen Laufzeiten durch
die Multiplexer (-> Änderungen im Fit!) tun muss - oder eben nicht genug
Test-Pins am FPGA besitzt (s.o.), arbeitet man mit zwei verschiedenen
Top-Level-Designs, welche einmal den synthesefähigen Teil und einmal den
synthesefähigen Teil sowie den nicht synthesefähigen Teil kapseln. In
der Simulation nutzt man dann nur Testbenches, die sich auf die zweite
Top-Entity mit Testport beziehen. Es gibt dabei kein Laufzeitproblem, da
Modelsim die asynchronen Multiplexer als 0 rechnet. In der Synthese
nutzt man hingegen nur das erste Top-Level design, wobei die Test-Pins
keine reale Verdrahtung im FPGA haben und daher unabhängig von
eventuellen Vektoren "über den Jordan" gehen.