diff options
| author | Julian Blake Kongslie | 2021-05-02 16:58:46 -0700 |
|---|---|---|
| committer | Julian Blake Kongslie | 2021-05-02 16:58:46 -0700 |
| commit | 529c1cc2496e24c6282c3fa9e0a45272b7f500b6 (patch) | |
| tree | bd604d5a531837a3d39e0759b298b72585843d15 /sim/main.cpp | |
| parent | Fix a few trivial errors with vector sizes, state names, and syntax. (diff) | |
| download | noncpu-529c1cc2496e24c6282c3fa9e0a45272b7f500b6.tar.xz | |
Add a bunch of microcoded instructions.
This is a minimum viable PDP-8 that can print "Hello, world!" and halt.
Diffstat (limited to 'sim/main.cpp')
| -rw-r--r-- | sim/main.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/sim/main.cpp b/sim/main.cpp index f082464..cc1c596 100644 --- a/sim/main.cpp +++ b/sim/main.cpp | |||
| @@ -5,6 +5,13 @@ | |||
| 5 | 5 | ||
| 6 | #include "Vtop.h" | 6 | #include "Vtop.h" |
| 7 | 7 | ||
| 8 | std::uint64_t phases = 0; | ||
| 9 | |||
| 10 | double sc_time_stamp() | ||
| 11 | { | ||
| 12 | return (double)phases / 2; | ||
| 13 | } | ||
| 14 | |||
| 8 | int main(int argc, const char *argv[]) | 15 | int main(int argc, const char *argv[]) |
| 9 | { | 16 | { |
| 10 | Verilated::commandArgs(argc, argv); | 17 | Verilated::commandArgs(argc, argv); |
| @@ -21,31 +28,29 @@ int main(int argc, const char *argv[]) | |||
| 21 | 28 | ||
| 22 | std::cout << "*** RESET SEQUENCE ***\n"; | 29 | std::cout << "*** RESET SEQUENCE ***\n"; |
| 23 | 30 | ||
| 24 | std::uint64_t time = 0; | ||
| 25 | |||
| 26 | top.native_clk = 0; | 31 | top.native_clk = 0; |
| 27 | top.reset_n = 0; | 32 | top.reset_n = 0; |
| 28 | top.eval(); | 33 | top.eval(); |
| 29 | vcd.dump(++time); | 34 | vcd.dump(++phases); |
| 30 | 35 | ||
| 31 | top.native_clk = 1; | 36 | top.native_clk = 1; |
| 32 | top.eval(); | 37 | top.eval(); |
| 33 | vcd.dump(++time); | 38 | vcd.dump(++phases); |
| 34 | 39 | ||
| 35 | top.native_clk = 0; | 40 | top.native_clk = 0; |
| 36 | top.reset_n = 1; | 41 | top.reset_n = 1; |
| 37 | top.eval(); | 42 | top.eval(); |
| 38 | vcd.dump(++time); | 43 | vcd.dump(++phases); |
| 39 | 44 | ||
| 40 | std::cout << "*** MAIN LOOP ***\n"; | 45 | std::cout << "*** MAIN LOOP ***\n"; |
| 41 | 46 | ||
| 42 | for (unsigned int i = 0; i < 100000 && !Verilated::gotFinish(); ++i) { | 47 | for (unsigned int i = 0; i < 10000 && !Verilated::gotFinish(); ++i) { |
| 43 | top.native_clk = 1; | 48 | top.native_clk = 1; |
| 44 | top.eval(); | 49 | top.eval(); |
| 45 | vcd.dump(++time); | 50 | vcd.dump(++phases); |
| 46 | top.native_clk = 0; | 51 | top.native_clk = 0; |
| 47 | top.eval(); | 52 | top.eval(); |
| 48 | vcd.dump(++time); | 53 | vcd.dump(++phases); |
| 49 | } | 54 | } |
| 50 | 55 | ||
| 51 | std::cout << "\n"; | 56 | std::cout << "\n"; |
