그렇다고 다양한 Advanced Tech를 전부 수용할만큼 market이 충분히 거대하지도 않음.
침체기 진입
여러 Design이 필요하지만, rising cost of design은 designer의 수를 수축시키는 결과를 가져오고 있음.
답은, Design Flow를 저렴하게 만듦으로써 Design Cost를 낮추는 것임.
두 가지의 설계철학
1. Waterfall
치밀한 설계를 통해, construction이 smooth하게 진행되도록 유도함.
2. Agile
perfect design이 무엇인지 in advance로 알 수 없을 때, 사용
개발사양이 reassess(변심)할 경우가 많고, 거기에 adapt해야됨.
(대충 어느정도는 아는 내용)
let do the couple of keystroke and let the computer do the job
Agile한 설계를 해야 하는 이유
End Goal을 인지하는 것 자체가 매우 hard to know in advance이다.
예)
새 implementation technology를 적용했을 떄, 얼마나 이 design map이 잘 될 것인가?
timing critical path는 어떨까?
verification을 어떻게 더 쉽게 할 수 있을까?
... 이런 것들은 설계를 하면서 유동적으로 감을 잡고, 방향수정을 하게 되는 일이 잦다.
HW Design을 좀 더 nimble하게 수행할 수 있게 된다.
예)
Verilog IP를 사오는것까지는 좋다.
여기서 약간을 수정하고자 한다면, 검증에 엄청난 노력이 소요된다.
그래서, reluctant to change 하게 된다.
그러나, 변경자체가 쉽다면
"oh yeah change a few things and it's easy to verify it again"
라는, 우디르급 태세전환을 할 수 있게 된다.
Potential for Agile Techniques for HW Design
Reduced Design Effort
Improved Design result(Effectively optimized)
Increased predictability of design process
Helps more people to participate more designs
Chisel(Constructing Hardware In a Scala Embedded Language)
Domain-specific Language embedded in Scala
Leverage OOP & Functional Programming
Unified Single language that writing generators which makes HW.
Scala
Run on top of JVM
Strong static type system with inference
Interpreter(REPL) or Jupyter => great way to test out