summaryrefslogtreecommitdiff
path: root/log.org
blob: 3b3955fd4ab17fe34ed5814cbbb0db52600bcc49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#+STARTUP: indent content 
#+TODO: TODO STALLED WONTFIX | DONE

* [2024-01-10 Wed] commit 7a3a5a07e
** log
- As of today I have a working `connectTypes` method which uses
  user-supplied type arithmetic in the `TypeArithmetic` object to
  resolve connected types.
- Motivation for connectTypes was to replicate the functionality of
  diplomacy when it does ":="
- Chatting with Adam about this, we noted the difference in philosophy
  between `connectTypes` and diplomatic `:=` connection. 
** `connectTypes` vs diplomatic `:=`
- Diplomatic connections serve to "note down" the connection to be
  made with `makeIOs`. These connections are made after the second
  stage of diplomacy finishes and the types are resolved. So there's a
  sequence of events with `:=`
- `connectTypes` resolve types /and/ make the IO connections at the
  same time. 

* [2024-02-14 Wed] Wokring AbstractInterface arithmetic
** log
- Add a new file AbstractModuleStandalone.scala which i copied over from scastie
- Add a new implicit generic function =abstractInterfaceConnection=
  which allows perfoming computations on AbstractInterfaces. Now, the
  user only needs to supply type arithmetic on =A => B => C= in order
  to get =AbstractInterface[A] => AbstractInterface[B] =>
  AbstractInterface[C]= to work.
- Next step will to be figure out multiple arities for =AbstractInterface=
* [2024-03-07 Thu] realization
- key realization this morning: there's a problematic muddling of two
  separate things in chisel: the /content of the module body/ and
  /scala-time computations/
- verilog module bodies need to be simple,
  post-scala-computation-representations of what computations actually
  need to be in hardware.
** consequences of this problem at sifive
- diplomacy creates multiple levels of scala-time computations while
  abstracting away the module body.
  - lazymodule is the scala-time computation, lazymoduleimp is the verilog body
- people need to insert shit into bodies of "modules" using InModuleBody
- interface of resulting modules is indeterminable