Я не уверен, как выглядит объявление instructMem. В любом случае, ReadData = instructMem [address] приведет к мультиплексору с адресом, который рассматривается как логика выбора, а instructMem как к линиям данных мультиплексора с использованием типичного инструмента синтеза. Вам нужно было бы добавить instructMem в список чувствительности, так как всякий раз, когда это меняется, также следует читать данные.
Я попробовал Icarus, и вы в любом случае не можете делать что-то вроде всегда @ (instructMem или address), где instructMem имеет объявление типа reg [7: 0] instructMem [255: 0] -> подразумевающее память.
Примечание: не пытайтесь синтезировать память Verilog таким способом, обычно вы должны создавать экземпляры IP-адресов памяти и подключаться к их портам. Продавцы предоставляют модели памяти для таких целей.