Welcome to the forum. your question is poorly researched as I can find on Google with a simple search a few options.
Does a google search show many options on the first page? Did you try searching first?
https://www.reddit.com/r/microcontrollers/comments/lrwvka/do_you_know_any_good_simulators_for_raspberry_pi/
There doesn't seem to be an official option like with Arduino and
TinkerCAD, so I'm just looking for whatever works. I know that
u/SpaceMan_The has already created a model of the Pico on Flux.ai, but
that system is still in beta and doesn't seem very easy to use. Plus
the model I linked is all in separate pieces, and when I tried to fork
it and assemble the pieces, I couldn't get it to work how I wanted...
Paul Falstad's Circuit Simulator Applet seems really easy to use, but
I can't find a way to add PIO, and I need that for what I'm trying to
test.
https://hackaday.io/project/177082-raspberry-pi-pico-emulator
There is minimal documentation and four examples only for the Pico simulator? is that what you would expect. I was able to run some examples but you should dive deeper and see which one suits you best.
https://github.com/GitJer/Some_RPI-Pico_stuff/tree/main/state_machine_emulator
https://github.com/GitJer/Some_RPI-Pico_stuff/tree/main/state_machine_emulator
Emulator of a Raspberry Pi Pico PIO state machine What does it do
This code takes a .pio.h file generated by pioasm as input and
emulates how a PIO state machine would execute it. The intended
purpose is to gain insight in how it works to find bugs.
Besides the .pio.h file, there are two more input files:
a file describing the c-statements such as putting data into the Tx FIFO (c_program)
a file describing the externally driven GPIO pins (pin_program)
The user can obtain insights into the workings of the pio code through
a GUI which shows all (?) the relevant sm internal data such as
registers.
For now this code only supports one state machine, of one PIO running
one program. Workflow
When working on a project, I typically have an IDE (in my case vscode)
with the project files, the pin_program and c_program files opened.
Additionally, I have the emulator open with the .pio.h file of the
project
When changing the .pio code, I use the IDE function 'build' to have
pioasm generate a new .pio.h file. Then I press Reload in the
emulator, and study the emulation output. When changing the c-code
that uses the pio code, I have to decide if the c_program also needs
to change. Often, this will not be the case because the c_program and
pin_program act more like test cases than that they mimic the real
c-code or real signals applied to the pins. Why?
The problem with the RPi Pico PIO state machines (sm) is that
debuggers do not give the insight I need when writing code for a sm. I
typically write some code, upload it to the pico and find that it
doesn't do what I want it to do. Instead of guessing what I do wrong,
I would like to see the values of e.g. the registers when the sm is
executing.