summaryrefslogtreecommitdiff
path: root/tb/avalon.hpp
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-12-16 13:19:47 -0600
committerAlejandro Soto <alejandro@34project.org>2022-12-16 22:20:26 -0600
commit2c7ad7bd098d885f3df623fe099adf500fbafad7 (patch)
treefb3566e130504711d733edb0216149a960fc89ce /tb/avalon.hpp
parent6e52e1df7567cdf419a193bf541dd98c0253e5a4 (diff)
Improve simulation performance for the most common case
Diffstat (limited to '')
-rw-r--r--tb/avalon.hpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/tb/avalon.hpp b/tb/avalon.hpp
index 323bd47..a2cc348 100644
--- a/tb/avalon.hpp
+++ b/tb/avalon.hpp
@@ -4,6 +4,7 @@
#include <cassert>
#include <cstdint>
#include <cstdio>
+#include <stdexcept>
#include <vector>
namespace taller::avalon
@@ -108,13 +109,22 @@ namespace taller::avalon
std::uint32_t status() noexcept;
};
+ class avl_bus_error : public std::runtime_error
+ {
+ public:
+ using std::runtime_error::runtime_error;
+ };
+
template<class Platform>
class interconnect
{
public:
interconnect(Platform &plat) noexcept;
- bool tick(bool clk);
+ bool tick(bool clk) noexcept;
+ void tick_rising();
+ void tick_falling() noexcept;
+
void attach(slave &dev);
void attach_intc(interrupt_controller &intc);
void bail() noexcept;