I’ve been working with the Device Modeling Language Compiler and noticed that it currently only works with Simics as its backend. I read in the documentation that they might add support for other backends later on.
I’m wondering if it would be possible to make QEMU work as a backend for DMLC. Has anyone tried doing this before? Are there any technical issues or roadblocks that would make this difficult to implement?
I’m particularly interested in understanding what modifications would be needed to make this integration work smoothly.
I tried this about two years ago and hit some major roadblocks. The biggest problem? DMLC generates code that’s built specifically for Simics’ attribute system and event scheduling - stuff that just doesn’t exist in QEMU. QEMU uses QOM (QEMU Object Model) for device structure instead of Simics’ configuration classes. Plus the timing and sync models are completely different between the two platforms, so direct translation won’t work. You’d basically need to build a whole translation layer to map DML constructs over to QEMU’s device framework. That’s a massive undertaking. Sure, it’s technically possible, but the amount of work probably isn’t worth it when QEMU already has its own device development workflow.
that’s actually a really interesting idea! i’ve been curious about this too since qemu has such good hardware emulation capabilities. what specific dml features are you hoping to use with qemu? also wondering if the timing models would translate well between the two platforms - have you looked into that aspect yet?