summaryrefslogtreecommitdiffstats
path: root/tpu.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2023-12-25 04:13:41 +0100
committerLouis Burda <quent.burda@gmail.com>2023-12-25 04:13:41 +0100
commit8ec5b039472f9fbe24f2eb1c5d8e66a7551a33fd (patch)
tree55f8af2371e6f9bd75f48f991984a818de9dbb1b /tpu.c
parentee7820e1cfde69c16130a43c8b7e7df1724afb9e (diff)
downloadtis100-8ec5b039472f9fbe24f2eb1c5d8e66a7551a33fd.tar.gz
tis100-8ec5b039472f9fbe24f2eb1c5d8e66a7551a33fd.zip
Fixup more behaviour - add dim idle indicator
Diffstat (limited to 'tpu.c')
-rw-r--r--tpu.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/tpu.c b/tpu.c
index 13db28d..9fb87c3 100644
--- a/tpu.c
+++ b/tpu.c
@@ -205,7 +205,7 @@ tpu_init(struct tpu *tpu)
tpu->disabled = false;
tpu->mode = MODE_IDLE;
- tpu->idle = true;
+ tpu->idle = false;
tpu->x = 0;
tpu->y = 0;
@@ -565,6 +565,7 @@ tpu_step(struct tpu *tpu)
if (tpu->pc >= tpu->inst_cnt) tpu->pc = 0;
} else {
tpu->mode = MODE_IDLE;
+ tpu->idle = true;
}
}
@@ -672,20 +673,27 @@ tis_step(struct tis *tis)
bool running;
size_t i;
- tis_communicate(tis);
-
for (i = 0; i < TPU_MAP_BUCKETS; i++) {
link = tis->tpu_map.buckets[i];
for (; link; link = link->next)
tpu_step(link->tpu);
}
+ tis_communicate(tis);
+
for (i = 0; i < TPU_MAP_BUCKETS; i++) {
link = tis->tpu_map.buckets[i];
for (; link; link = link->next)
tpu_update(link->tpu);
}
+ for (i = 0; i < TIS_MAX_IO_PORTS; i++) {
+ if (tis->in_ports[i])
+ tpu_port_update(&tis->in_ports[i]->port);
+ if (tis->out_ports[i])
+ tpu_port_update(&tis->out_ports[i]->port);
+ }
+
running = false;
for (i = 0; i < TPU_MAP_BUCKETS; i++) {
link = tis->tpu_map.buckets[i];
@@ -699,13 +707,6 @@ tis_step(struct tis *tis)
}
}
- for (i = 0; i < TIS_MAX_IO_PORTS; i++) {
- if (tis->in_ports[i])
- tpu_port_update(&tis->in_ports[i]->port);
- if (tis->out_ports[i])
- tpu_port_update(&tis->out_ports[i]->port);
- }
-
tis->steps += 1;
return running;