post sim: simulation verhaelt sich leider nicht wie gewuenscht
authorBernhard Urban <lewurm@gmail.com>
Sun, 11 Apr 2010 15:07:21 +0000 (17:07 +0200)
committerBernhard Urban <lewurm@gmail.com>
Sun, 11 Apr 2010 15:22:19 +0000 (17:22 +0200)
commit5dafb1ce726b24ce2fcad884731d87a1d14e1947
tree4c091885077f9951d1c964b7e7b3b484ba14d514
parentefcff26b79abf33fcd0ce513d92fd69bf5a6d3fc
post sim: simulation verhaelt sich leider nicht wie gewuenscht

nachdem ich schon den ganzen nachmittag verschissen hab, die postlayout simulation zum laufen zu
kriegen, hier mal eine zusammenfassung meiner erkenntnisse:

* quartus erstellt simulationsdaten (wenn das tcl-skript verwendet wird) fuer modelsim im
  verzeichnis ~hwmod/quartus/calc/simulation/modelsim
* modelsim starten
* change directory (z.b. ~hwmod/sim/post)
* File -> New -> Lib
* Compile -> Compile und folgende files kompilieren
o ~hwmod/quartus/calc/simulation/modelsim/calc.vho
o ~hwmod/src/gen_pkg.vhd
o ~hwmod/src/alu_tb_post.vhd
* Simulate -> Start Simulation
o in den tab "SDF" wechseln und die datei ~hwmod/quartus/calc/simulation/modelsim/calc_vhd.sdo
  waehlen und in das feld "apply to region" "/bla" eingeben ("bla" ist dabei die instanz in der
  testbench)
o nun unter dem tab "Design" work -> alu_tb -> sim und die testbench waehlen und die simulation
  starten

das groesste problem war dabei, dass die entity in der calc.vho zu folgende wird:
> ENTITY  alu IS
> PORT (
>  sys_clk : IN std_logic;
>  sys_res_n : IN std_logic;
>  \opcode.NOP\ : IN std_logic;
>  \opcode.SUB\ : IN std_logic;
>  \opcode.ADD\ : IN std_logic;
>  \opcode.MUL\ : IN std_logic;
>  \opcode.DIV\ : IN std_logic;
>  \opcode.DONE\ : IN std_logic;
>  op1 : IN std_logic_vector(31 DOWNTO 0);
>  op2 : IN std_logic_vector(31 DOWNTO 0);
>  op3 : OUT std_logic_vector(31 DOWNTO 0);
>  do_calc : IN std_logic;
>  calc_done : OUT std_logic
>  );
> END alu;

statt wie original:
> package gen_pkg is
>         type alu_ops is (NOP, SUB, ADD, MUL, DIV, DONE);
>         constant CBITS : integer := 32;
>         subtype csigned is signed((CBITS-1) downto 0);
> end package gen_pkg;
>
> entity alu is
>         port
>         (
>                 sys_clk : in std_logic;
>                 sys_res_n : in std_logic;
>                 opcode : in alu_ops;
>                 op1 : in csigned;
>                 op2 : in csigned;
>                 op3 : out csigned;
>                 do_calc : in std_logic;
>                 calc_done : out std_logic
>         );
> end entity alu;

das hat die folge dass man die testbench der beh-sim nicht verwenden kann UND dass ein ewig lange
fehlerliste kommt, wodurch es schwer war, festzustellen worin die fehlerursache ueberhaupt nun liegt.

es ist auch nicht besonders praktisch wie sich die entity defintion entartet... trotzdem hab ich mal
die testbench der beh-sim dafuer angepasst. die simulation dazu verhaelt sich leider nicht
gewuenscht, und ich hab im moment auch keine ahnung woran das liegen koennte :/
src/alu_tb_post.vhd [new file with mode: 0644]