[ANN] Dyad: A New Language to Make Hardware Engineering as Fast as Software

Installing Dyad is not working.

I could:

  • install the VSCode plugin
  • create a project
  • authenticate with JuliaHub
  • add the new registries

But instantiating the project fails with:

(OpenSourceAWEComponents) pkg> up
    Updating registry at `~/.julia/registries/DyadRegistry.toml`
    Updating registry at `~/.julia/registries/General.toml`
    Updating registry at `~/.julia/registries/JSMLComponents.toml`
    Updating registry at `~/.julia/registries/JuliaComputingRegistry.toml`
    Updating registry at `~/.julia/registries/JuliaHubRegistry.toml`
     Cloning [99806f68-afab-45ca-9d8c-ceff6bc61f54] DyadInterface from https://github.com/JuliaComputing/DyadInterface.jl.git
ERROR: failed to clone from https://github.com/JuliaComputing/DyadInterface.jl.git, error: GitError(Code:ERROR, Class:HTTP, unexpected http status code: 404)

Any idea?

Dyad looks promising. It is not clear to me whether the full scope of MTK possibilities are available in Dyad yet (SDEs, PDEs, etc.).

I am curious about the following…

  • With the Dyad Studio extension in VSCode, I understand that I can work with Dyad models locally on my laptop.
  • Does this also include that I can use the Dyad GUI locally on my laptop (or office desktop)?
  • If I at some stage (after I master Dyad Studio myself) want to include Dyad in my course, is there a procedure for giving students (could be many) access to installing Dyad Studio? Is this trust based, or would the university be asked to provide a list of students?

The problem is that it is looking for https://github.com/JuliaComputing/DyadInterface.jl.git when it should be looking for git@github.com:DyadLang/DyadInterface.jl.git. I have no idea why that is happening… Can you share ]registry st and ]st? It’s probably best to follow up at GitHub · Where software is built since then it will be tracked and not potentially lost in the middle of a fairly long thread.

They are not. MTK will continue to have things outside of the normal industrial use cases, while Dyad will be focused directly on giving a smooth industrial modeling workflow.

Not at this time.

They can just install the VS Code extension and they are off to the races!

1 Like

But the plan is that in the future, GUI composition of models will work locally on the PC via Dyad Studio, i.e., no need to run in the cloud?

There are plans for it yes

1 Like

Try with JULIA_PKG_SERVER=juliahub.com JULIA_PKG_USE_CLI_GIT=true julia --project=.; that may help (let us know if it indeed does so we update the FAQ!

If it’s not that, could you share ~/.gitconfig (minus any secrets) Does it have any rule like

[url "ssh://git@github.com/"]
	insteadOf = https://github.com/
1 Like

@ufechner7 could you also confirm which version of Dyad Studio is installed on your machine? It should be v0.5.1. You would also have to launch Julia via the Julia: Start REPL command in VSCode (through the command palette) or as @pankgeorg mentioned by explicitly setting the package server via environment variable.

Starting Julia with

JULIA_PKG_SERVER=juliahub.com JULIA_PKG_USE_CLI_GIT=true julia --project

and then doing:

] instantiate

works!

Output of Pkg.status():

Project OpenSourceAWEComponents v0.1.0
Status `~/repos/KiteControllers.jl/OpenSourceAWEComponents/Project.toml`
  [7bc808db] DyadEcosystemDependencies v0.9.4
  [99806f68] DyadInterface v4.3.4
⌅ [961ee093] ModelingToolkit v9.80.5
  [50262376] OrdinaryDiffEqDefault v1.4.0
⌅ [aea7be01] PrecompileTools v1.2.1
⌃ [7e49a35a] RuntimeGeneratedFunctions v0.5.14
  [d6f4376e] Markdown v1.11.0

And Dyad Studio is version 0.5.1, yes.

1 Like

I will never ever do that. It does a lot things automatically, but never what I want. I prefer a small script run_julia in the bin folder that start Julia with all the options I need.

That works too :smiley: In this case the only thing you need to set is the JULIA_PKG_SERVER environment variable. The workflow also assumes you have Revise loaded.

1 Like

Pardon my ignorance, but what is meant by “hardware engineering” ?

In my context, this would imply VHDL or Verilog. I wondered for a moment whether Dyad is meant to facilitate FPGA engineering, competing with systems like Chisel, Clash, or HardCaml. But the only non-CPU hardware the documentation mentions is GPUs.

I see that there’s an intent to be able to “generate code for embedded devices”. Are you able to specify what is meant by “embedded devices” ? It’s an unfortunately blurry term and I understand if you’d rather not.

I’m currently working on compiling ODEs from Julia to Verilog, is why I’m asking all this.

2 Likes

Hardware engineering, like the creation of airplanes, cars, wind turbines, etc. Machines. And for embedded, it’s embedded controllers, like the controllers in airplanes and automobiles. VHDL and Verliog is more the microchip world which is different. The domain we’re talking about here is Modelica, Simulink, Amesim, etc.

2 Likes

How is Dyad Lang compiled and deployed to hardware?

Is it going to use Dyad Lang → Julia → juliac toolchain? Or some other codegen tool to generate C code?

That’s a coming soon blog post.

5 Likes

TypeScript was chosen because we want the language kernel to run natively in a browser and in VS Code. As Chris points out, we aren’t doing any math (numerical or symbolic) in the Dyad kernel, just semantic processing of the language itself and then code generation to Julia. MTK + Julia pick things up from there and do a lot of the computational heavy lifting.

5 Likes

Dyad, like Modelica, supports both causal and acausal modeling formalisms.

2 Likes

Followed Getting Started with Dyad Studio | Dyad, try to instantiate or test, but got this :

ERROR: Unsatisfiable requirements detected for package DyadEcosystemDependencies [7bc808db]:
 DyadEcosystemDependencies [7bc808db] log:
 ├─possible versions are: 0.7.0-0.9.4 or uninstalled
 ├─restricted to versions 0.9.4 by TestComponent [aecf22dd], leaving only versions: 0.9.4
 │ └─TestComponent [aecf22dd] log:
 │   ├─possible versions are: 0.1.0 or uninstalled
 │   └─TestComponent [aecf22dd] is fixed to version 0.1.0
 └─restricted by julia compatibility requirements to versions: uninstalled — no versions left

Although Pkg.status() doesn’t give me version info of pkgs, but I believe they are correct

Status `~\Documents\Julia\Dyad\TestComponent\Project.toml`
  [7bc808db] DyadEcosystemDependencies
  [99806f68] DyadInterface
  [961ee093] ModelingToolkit
  [50262376] OrdinaryDiffEqDefault
  [aea7be01] PrecompileTools
  [7e49a35a] RuntimeGeneratedFunctions
  [d6f4376e] Markdown

Does anyone know what happened?

What Julia version are you on? It should be v1.11.4 or higher, otherwise we know some packages won’t work so we have restricted the Julia compat.

That’s indicated by

 └─restricted by julia compatibility requirements to versions: uninstalled — no versions left
2 Likes

I’m on v1.10 indeed, let me update and try. [solved]
Can someone add this info to Getting Started or FAQ, I didn’t see it on doc.